Почему только последний JPanel, который я добавляю в JFrame, изменяет размер? - PullRequest
2 голосов
/ 28 октября 2011

Итак, я работаю над приложением с графическим интерфейсом, используя платформу Swing. Короче говоря, у меня есть 3 JPanels, которые действуют как различные представления моего приложения. Теперь проблема в том, что независимо от порядка добавления JPanels к моему JFrame, только final JPanel, который я добавляю, изменяет размеры, когда я переключаюсь в это представление.

Некоторые соответствующие биты кода:

При создании окна я сначала создаю каждый отдельный JPanel и добавляю его в JFrame:

 JPanel newPanel = new SomeClassExtendingJPanel();
 this.jframe.add(newPanel);

Далее, всякий раз, когда я переключаюсь между представлениями приложения, я скрываю активную в данный момент панель:

 jframe.validate();
 jframe.repaint();
 oldPanel.setVisible(false);

А затем активируйте отображаемую панель:

 jframe.validate();
 jframe.repaint();
 newPanel.setVisible(true);

Кто-нибудь знает, что может быть не так?

Ответы [ 2 ]

2 голосов
/ 28 октября 2011

JPrame ContentPane реализовал BorderLayout по умолчанию, и есть возможность поместить только один JComponents в один Area,

, который необходимо изменить, используя LayoutManager или поставить другой JPanels на другой Areas

2 голосов
/ 28 октября 2011

Чтобы изменить размер JFrame с каждым свопом, вы можете вызвать pack() на нем, но это клудж, когда GUI постоянно изменяет размер.Лучшее решение - использовать механизм Swa для обмена представлениями - CardLayout.Это увеличит размер контейнера до максимального размера, необходимого для адекватного отображения всех компонентов карты.

Ознакомьтесь с учебным пособием CardLayout и CardLayout API на этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...