swing: подходящий менеджер раскладки для простой ситуации? - PullRequest
0 голосов
/ 12 февраля 2010

У меня есть JPanel, который я хочу использовать, чтобы содержать 3 вертикальных компонента:

  1. a JLabel
  2. a JTextField
  3. a JScrollPane

Я хочу, чтобы все 3 компонента заполняли ширину JPanel. Я хочу, чтобы JLabel и JTextField использовали свои обычные высоты, а JScrollPane - остальные.

BoxLayout почти работает, за исключением того, что JTextField и JScrollPane разделяют «дополнительное» пространство, когда JPanel сделан большим.

Что я могу сделать?

Ответы [ 3 ]

2 голосов
/ 12 февраля 2010

Создать BorderLayout. Поместите JScrollPane в его центр.

Создание JPanel с BoxLayout. Поместите JLabel и JTextField в это, вертикально. Поместите эту JPanel в СЕВЕРНУЮ сторону BorderLayout.

1 голос
/ 18 февраля 2010

Вы также можете использовать DesignGridLayout следующим образом:

DesignGridLayout layout = new DesignGridLayout(thePanel);
layout.row().center().fill().add(theLabel);
layout.row().center().fill().add(theTextField);
layout.row().center().fill().add(theScrollPane);

Это должно вести себя точно так, как вы описываете.

Каждый вызов row () создает новую строку на панели.

При вызове fill () убедитесь, что каждый компонент использует всю доступную ширину.

Вот несколько преимуществ использования DesignGridLayout:

  • только один LayoutManager для всего панель
  • автоматические границы и междурядье
1 голос
/ 12 февраля 2010

GridBagLayout очень удобно. Вы можете контролировать все, что вам нужно, и вы можете контролировать только то, что вам нужно. Возможно, вас заинтересуют только вертикальные параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...