У меня есть программа, которая создает JButtons, которые затем добавляются в JPanel с BoxLayout, который настроен на их вертикальное размещение. Иногда первая кнопка намеренно удаляется из JPanel. Первоначально кнопки центрированы правильно, и кнопки также успешно удаляются. Проблема в том, что оставшиеся кнопки затем раздвигаются, чтобы заполнить пространство. Это не то, что я хотел бы, вместо этого я хотел бы, чтобы они повторно центрировались по оси Y, не раздвигаясь.
У меня есть класс, который расширяет JPanel. В конструкторе создается BoxLayout.
setPreferredSize(new Dimension(150, 500));
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
setAlignmentY(CENTER_ALIGNMENT);
Создание кнопок в настоящее время является методом в этом классе:
createButtons(int numButtons){
for (int i=0;i<numButtons;i++) {
add(new JButton());
}
И удаление - еще один метод:
removeButton(){
if(getComponentCount()>1){
remove(0);
validate();
repaint();
}
}
Кто-нибудь знает, как сделать, чтобы кнопки оставались центрированными вдоль оси Y, не расширяясь, чтобы заполнить содержащую панель?
getComponentCount
? Я бы ожидалcomponentCount
илиgetComponentCount()
. - person Andrew Thompson   schedule 02.07.2012