Изменение содержимого фрейма - PullRequest
1 голос
/ 29 марта 2012

Я делаю графический интерфейс для приложения Java. То, что я пытаюсь сделать, это иметь рамку, и в зависимости от действий пользователя изменить отображаемую панель. Хотя, если я сделаю что-то вроде этого:

private void setFrameContent(Container content) {
        appFrame.setContentPane(content);
    }

рамка просто замерзнет, ​​как только я попытаюсь изменить отображаемое JPanel. Также попробовал некоторые варианты этого.

Как мне изменить содержимое фрейма?

Одним из вариантов будет CardLayout, но это будет означать, что мне придется создавать все панели при запуске приложения, в то время как некоторые из них могут не использоваться. Какие еще способы можно достичь?

1 Ответ

2 голосов
/ 29 марта 2012

1) если вы добавите JComponent к уже видимому контейнеру, то вам придется вызвать revalidate() и repaint(), в вашем случае

  • для Java7 естьреализовано revalidate() и repaint() до JFrame напрямую

  • для Jav6 и более низкой версии вам необходимо revalidate() и repaint() для ContentPane

2) Я думаю, что CardLayout (все же) может быть лучшим вариантом для переключения между Views в Swing GUI

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