Как закрыть JFrame? - PullRequest
       8

Как закрыть JFrame?

1 голос
/ 12 декабря 2011

У меня есть основной фрейм приложения.Если пользователь нажимает кнопку, он получает новый фрейм, в котором есть какой-то график.Теперь, если я хочу закрыть эту диаграмму, закрываются и диаграмма, и основное приложение.Как я могу различить эти два закрытия?Конечно, я не хочу, чтобы мое приложение закрывалось после закрытия фрейма, в котором я поместил график.Вот код кадра диаграммы.

chartBttn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                final ShowChart sc = new ShowChart("Reserve Selection", getUtilExperiments() );
                sc.pack();
                RefineryUtilities.centerFrameOnScreen(sc);
                sc.setVisible(true);
                sc.setDefaultCloseOperation(ShowChart.DISPOSE_ON_CLOSE);

            }
        });

Ответы [ 4 ]

5 голосов
/ 12 декабря 2011

Вы можете использовать метод dispose(). Или вы можете позвонить setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); на JFrame.

3 голосов
/ 12 декабря 2011

Конечно, я не хочу, чтобы мое приложение закрывалось после закрытия фрейма, в котором я поместил график.

1) не создавайте много JFrames на лету, создайте JFrame только один раз и повторно используйте его для следующего использования, затем

  • вызовите только для видимости setVisible(false/true) с setDefaultCloseOperation(JFrame.NOTHING_ON_CLOSE)

илиочень простой обходной путь

  • setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE)

2) или JDialog с setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE)

3) УВЕДОМЛЕНИЕ: но в этом случае невозможно закрыть текущий экземпляр JVM, вам нужно добавить JButton or JMenu/JMenuItem, что ускоряет System.exit(1)

3 голосов
/ 12 декабря 2011

Если я правильно понял вас в вашем новом JFrame, создайте метод для вашей кнопки закрытия или кнопки X window с помощью:

setVisible(false); 
dispose();

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

0 голосов
/ 07 марта 2016

просто используйте super.dispose(); для закрытия предыдущего jframe

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