Swing: самый простой способ выровнять ширину [динамических] [статических] [динамических] компонентов? - PullRequest
2 голосов
/ 21 декабря 2010

Что является самым простым способом в стандартном Java Swing для выравнивания трех компонентов таким образом, чтобы:

  • динамическая ширина из Component1 и Component3 настроены на равные ,

  • , в то время как Component2 (который находится между) имеет постоянную ширину?

Представьте, что у нас есть некоторый изменяемый размер JPanel (например, внутри JFrame).

Небольшая ширина должна выглядеть следующим образом:

[----------------whole JPanel----------------]
[--Component1--] [Component2] [--Component3--]

Большая ширина должна выглядеть следующим образом:

[------------------------whole JPanel------------------------]
[------Component1------] [Component2] [------Component3------]

Примечание: я просто "опробовал и допустил ошибку" с GroupLayout слишком долго.

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

Как насчет менеджера MigLayout ? Он не является частью JRE, но является отличным менеджером макетов, который может легко создать требуемый макет с меньшим количеством кода, чем GridBag. Проверьте их демо .

Не удержался, чтобы опубликовать полностью сетку мультфильм ... наслаждайтесь (:

1 голос
/ 21 декабря 2010

Одна опция использует GridBagLayout .Быстрый и грязный фрагмент, чтобы начать работу:

GridBagConstraints gbc;
final int A_CENTER = GridBagConstraints.CENTER;  // anchor: center
final int F_NONE = GridBagConstraints.NONE;  // fill: none
final int F_DX = GridBagConstraints.HORIZONTAL;  // fill: dx only
final Insets IN_0 = new Insets(0, 0, 0, 0);  // empty insets

setLayout(new GridBagLayout() );
gbc = new GridBagConstraints(0, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);
gbc = new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, A_CENTER, F_NONE, IN_0, 0, 0);
add(new JButton("test2"), gbc);
gbc = new GridBagConstraints(2, 0, 1, 1, 50.0, 0.0, A_CENTER, F_DX, IN_0, 0, 0);
add(new JButton("test1"), gbc);

Очевидно, что вы можете сделать гораздо больше с GridBag, и вам нужно будет немного полировать, чтобы получить именно то, что вы хотите видеть, ноэто должно помочь вам начать.

Пятый параметр в конструкторе GBC - это вес для растяжения в направлении x.Установка их равными и принуждение центрального компонента не растягиваться (F_NONE) делает грязную работу.

...