Использование BorderLayout для добавления 4 встроенных компонентов в JPanel
В моем приложении 4 панели. И мне нужно вставить их в основную панель, которая использует BorderLayout
, 4 панели...
- Тонкая полоска изображений.
- 4 кнопки чуть выше
- TextField, охватывающий всю страницу.
- Примерно в конце.
Это мой код...
add(imageLabel, BorderLayout.NORTH);
add(buttonPanel,BorderLayout.PAGE_START);
add(logScrollPane, BorderLayout.CENTER);
add(about, BorderLayout.PAGE_END);
Когда я делаю это, buttonPanel
исчезает. Как я могу достичь того, что мне нужно?
1 ответ
Решение
Я обычно стараюсь сохранить максимум 3 компонента в любом BorderLayout
так что я бы сделал это так...
JPanel outerPanel = new JPanel(new BorderLayout());
JPanel innerPanel= new JPanel(new BorderLayout());
innerPanel.add(buttonPanel,BorderLayout.NORTH);
innerPanel.add(logScrollPane, BorderLayout.CENTER);
innerPanel.add(about, BorderLayout.SOUTH);
outerPanel.add(imageLabel, BorderLayout.NORTH);
outerPanel.add(innerPanel,BorderLayout.CENTER);
Пока вы сохраняете "максимально растянутый" компонент в CENTER
(в этом случае ваш logScrollPane
) тогда это всегда будет работать. Если вы хотите использовать панель, например, установить ее на JFrame
Просто используйте add(outerPanel)
,
Не бойся BorderLayout
- способность этого макета автоматически расширять CENTER
компонент для заполнения доступного пространства делает его очень мощным и очень важным LayoutManager
!