Почему компоненты JList и TextArea не меняют размер с помощью GridBagLayout? - PullRequest
0 голосов
/ 09 февраля 2012

http://pastebin.com/VaaTRsuf

Я бы хотел, чтобы размеры JList и JTextArea изменялись вместе с окном, но JPanel остается в центре.

1 Ответ

2 голосов
/ 09 февраля 2012

Ваш класс 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.

...