Простой двухколонный макет с Swing - PullRequest
2 голосов
/ 06 апреля 2010

Как получить боковую панель JPanel фиксированной с помощью Swing. Сейчас я пытаюсь это:

public SidebarPanel() {
    this.setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));   
    this.setPreferredSize(new Dimension(200, this.getPreferredSize().height));
    ...

Но когда я изменяю размер окна, ширина боковой панели также изменяется. Как это исправить?

Ответы [ 3 ]

4 голосов
/ 06 апреля 2010

В Swing нет гарантии, что предпочтительный размер соблюдается. Это зависит от менеджера компоновки контейнера.

Если контейнер использует BorderLayout, вы можете добавить SidebarPanel, используя:

container.add(sidebarPanel, BorderLayout.EAST)

Это будет учитывать предпочтительную ширину.

1 голос
/ 06 апреля 2010

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

0 голосов
/ 20 ноября 2014

Вы можете использовать BorderLayout, добавив в JPanel

    mainContent.setLayout(new BorderLayout());
    mainContent.add(pnlHeader, BorderLayout.WEST);
    mainContent.add(pnlResultList, BorderLayout.EAST);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...