Использование BorderLayout для добавления 4 встроенных компонентов в JPanel

В моем приложении 4 панели. И мне нужно вставить их в основную панель, которая использует BorderLayout, 4 панели...

  1. Тонкая полоска изображений.
  2. 4 кнопки чуть выше
  3. TextField, охватывающий всю страницу.
  4. Примерно в конце.

Это мой код...

    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!

Другие вопросы по тегам