Как продвинуть GridbagLayout не класть компоненты в центре JPanel

Замена больше чем одной переменной за один раз. Это управляет мной абсолютно помешанный ! Как можно определить влияние изменения в системе, когда больше чем одна вещь была изменена?

Связанный с этим, внося изменения, которые не гарантированы наблюдениями. Почему добавляют быстрее/больше центральные процессоры, если процесс не является зависящим от ЦП?

12
задан ante.sabo 14 August 2009 в 10:28
поделиться

4 ответа

Вам нужно добавить хотя бы один компонент, который заполнит горизонтальное пространство. Если у вас нет такого компонента, вы можете попробовать следующее:

GridBagConstraints noFill = new GridBagConstraints();
noFill.anchor = GridBagConstraints.WEST;
noFill.fill = GridBagConstraints.NONE;

GridBagConstraints horizontalFill = new GridBagConstraints();
horizontalFill.anchor = GridBagConstraints.WEST;
horizontalFill.fill = GridBagConstraints.HORIZONTAL;    

panel.add(new JLabel("Left Aligned"), noFill);
panel.add(Box.createHorizontalGlue(), horizontalFill);
19
ответ дан 2 December 2019 в 05:41
поделиться

Если вы хотите изменить расположение компонента в ячейке, созданной GridBagLayout используйте параметр привязки из GridBagConstraints .

0
ответ дан 2 December 2019 в 05:41
поделиться

У меня была такая же проблема, как и у вас. Решил ее, добавив эту панель в другую с ограничением BorderLayout и NORTH.

Ondrej

0
ответ дан 2 December 2019 в 05:41
поделиться

Вы можете сделать это, просто используя эту служебную банку painless-gridbag . Это также сделает ваш код с GridBagLayout намного красивее, например, следующий

    PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false);

    gbl.row().cell(lblFirstName).cell(txtFirstName).fillX()
             .cell(lblFamilyName).cell(txtFamilyName).fillX();
    gbl.row().cell(lblAddress).cellXRemainder(txtAddress).fillX();

    gbl.doneAndPushEverythingToTop();
0
ответ дан 2 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: