Закрытие основного JFrame - PullRequest
       20

Закрытие основного JFrame

0 голосов
/ 14 февраля 2012

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

Я знаю, что есть функции dispose, они хорошо работают как jframe1.dispose (), но я не понимаю, как скрыть самый первый JFrame, код которого в основном написан так:

    public static void main(String args[]) {


    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() 
          {          
           new GraphicalInterface().setVisible(true);
          }
       });
     }

как мне установить это значение .setVisible (false) в коде кнопки?

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

Вам необходимо сохранить ссылку на JFrame, чтобы вы могли установить ее видимость позже.

private JFrame myFrame;

public void run() {
  myFrame = new GUI();
  myFrame.setVisible(true);
}

public void hide() {
  myFrame.setVisible(false);
}

Обратите внимание, что JFrame - это контейнер верхнего уровня, у вас действительно должен быть только один на приложение. Возможно, было бы лучше, если бы вместо нескольких JFrame s вы использовали только один, и вместо этого поменялись местами JPanel.

0 голосов
/ 14 февраля 2012

Вы можете присвоить свой GUI (я полагаю, расширяет JFrame) переменной и вызвать .setVisible (false) для этого объекта. Поскольку ваш объект из приведенного выше кода является более или менее анонимным, у вас не будет доступа к нему.

Вы также можете проверить это .

0 голосов
/ 14 февраля 2012

Это будет безопасно для ресурсов, если вы сохраните только один кадр и установите новую панель в качестве контента.

Ваш вопрос был, как обработать ссылку на фрейм? Пожалуйста, предоставьте код, где будет создан следующий кадр.

...