Почему компоненты JList и TextArea не меняют размер с помощью GridBagLayout?
Я хотел бы, чтобы размеры JList и JTextArea изменялись вместе с окном, но JPanel остается в центре.
1 ответ
Ваш класс LogView расширяет JPanel и, таким образом, если вы не измените его, он использует макет JPanel по умолчанию FlowLayout. Компоненты, содержащиеся в контейнере, использующем FlowLayout, не изменяют размер, когда контейнер меняет размер, и поэтому, если вы хотите, чтобы это происходило, вам не нужен слушатель компонента - вам просто нужно изменить менеджер макета для LogView JPanel на BorderLayout или что-то подобное, что позволяет расширить его компонент, вот и все. Одна строка кода:
public LogView(final JFrame contentPane) {
// .......
setLayout(new BorderLayout()); // add this, that's it
add(mainPanel);
}
Другой вариант - избавиться от mainPanel, так как в этом нет необходимости, установить макет вашего объекта LogView равным GridBagLayout и добавить ваши компоненты непосредственно в объект LogView.