У меня есть JPanel с GridBagLayout внутри JScrollPane.У меня также есть кнопка «Добавить» в JPanel, которая при нажатии будет удалена из JPanel, добавляет новый экземпляр отдельного компонента в JPanel, а затем добавляет себя обратно в JPanel.Такого рода составляется растущий список компонентов, за которым следует кнопка «Добавить».
Добавление новых компонентов работает нормально, JPanel растягивается для размещения новых компонентов, а JScrollPane ведет себя, как и ожидалось, позволяя прокручиватьпо всей длине JPanel.
Вот как работает добавление:
jPanel.remove(addButton);
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = GridBagConstraints.RELATIVE;
jPanel.add(new MyComponent(), c);
jPanel.add(addButton, c);
jPanel.validate();
jPanel.repaint();`
Удаление выполняется нажатием кнопки внутри самих добавленных компонентов.Они удаляются из JPanel просто отлично.Однако JPanel сохраняет свой растянутый размер, повторно центрируя список компонентов.
Вот как работает удаление:
Container parent = myComponent.getParent();
parent.remove(myComponent);
parent.validate();
parent.repaint();`
Вопрос в том, почему размер моего GridBagLayout JPanel изменяется.при добавлении компонентов, но не при удалении компонентов?