Java, выбирающая проблему расположения - PullRequest
1 голос
/ 09 февраля 2012

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

[Nav Panel Up top, One row]
[            ^            ]
[            |            ]
[       Empty Panel       ]
[            |            ]
[            |            ]
[            |            ]
[            ^            ]

Вложенная панель содержит кнопки навигации.

У меня вопрос, должен ли я использовать GridBagLayout и просто установить его как 10 строк?и пусть пустая панель развернет 9 из них или есть лучший макет в Java, который позволил бы мне сделать это?

Ответы [ 2 ]

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

Похоже, что «панель навигации» может быть самостоятельным компонентом. Если дополнительный уровень вложенности не является проблемой, я бы просто использовал BorderLayout, поместил компонент навигационной панели NORTH и пустую панель (где остальные пользовательский интерфейс, я полагаю) в CENTER.

Я предпочитаю GridBagLayout для создания сложных элементов управления, которые больше не могут быть разделены на подпанели, и нуждаются в макетах с большим количеством граней для выравнивания - его гибкость в этом случае немного избыточна (Конечно, она по-прежнему идеально подходит для этой задачи, но не самый простой способ ее выполнить.)

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

Вы не хотите использовать 9 строк в GridBagLayout для хранения одного компонента; это сильнее, чем это. Вместо этого укажите GridBagConstraints для панели навигации weighty, равный 0, а пустой панели weighty, равное 1 (или любое положительное число). Это приведет к тому, что пустая панель займет дополнительное место.

...