проблема при назначении JPanel, возвращенного методами другого класса, общему объекту JPanel один за другим - PullRequest
0 голосов
/ 24 июня 2011

Я создаю приложение установки. У меня есть основной класс, который инициализирует приложение; которая имеет переменную JFrame и 2 JPanel, а именно panelX и panelY. Этот основной класс создает JFrame и добавляет к нему panelX и panelY. В этих панелях у панели Y есть три кнопки J (а именно Back, Next и Quit). Панель Y остается такой же, как и в течение всего процесса. Где panelX изменяет свое содержимое, как в случае нажатия кнопки «Далее» и «Назад».

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

В моем коде при нажатии кнопки «Далее» и «Назад» выполняются следующие шаги

1) Я вызываю метод removeAll (), чтобы удалить все компоненты панели X

2) panelX имеет нулевое значение.

3) Вызывается соответствующий метод вышеуказанных классов, который возвращает JPanel. это возвращенный JPanel назначен на panelX.

Ex.

panelX.removeAll();    
panelX=null;    
panelX=getNextPanel();

4) после вышеуказанного шага; Я вызываю repaint (); и подтвердите метод на панели X.

Ex.

panelX.repaint();
panelX.validate();

Проблема в том, что когда я нажимаю кнопку «Далее», она показывает правильную панель, но когда я нажимаю кнопку «Назад» после двухкратного нажатия кнопки «Далее» и перемещения указателя мыши на панели X, на ней также отображаются компоненты предыдущей назначенной панели.

Итак, скажите, пожалуйста, друзья, как я решаю эту проблему.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Используйте CardLayout , как показано здесь .

Game view High Scores view

0 голосов
/ 24 июня 2011

Не устанавливайте panelX на ноль или переназначайте переменную на новый JPanel.

Вместо этого вы можете повторно использовать существующий panelX, добавляя к нему компоненты после вызова removeAll.

...