о переопределении метода run () GUI в методе main - PullRequest
1 голос
/ 29 февраля 2012

Проблема в том, что когда я закрываю окна GUI, я хочу запустить последний метод (например, printList ()), но мне не удается это сделать.Это мой основной метод

public static void main(String args[]) {

    /* Create and display the form */
    java.awt.EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            try {
                patientTest2 screen = new patientTest2();
                screen.setVisible(true);
                screen.setResizable(false);
            } catch (FileNotFoundException ex) {
                Logger.getLogger(patientTest2.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    });

PatientTest2 - мой класс JFrame.Я предполагаю, что если я поставлю printList() перед } catch (FileNotFoundException ex) {, это должно сработать и, наконец, распечатать мой список в файл, но это не так.Я буду рад, если вы сможете мне помочь и объяснить, почему, конечно, _?

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Вам необходимо

  • изменить операцию закрытия по умолчанию на JFrame.DO_NOTHING_ON_CLOSE (если окно является JFrame)
  • добавить WindowListener в окно верхнего уровня
  • прослушивает события закрытия окна, вызывает ваш метод
  • и, наконец, завершает работу JVM с соответствующим кодом выхода (обычно 0, если ошибок нет).
3 голосов
/ 29 февраля 2012

Вы должны добавить слушатель, который расширяет WindowAdapter к вашему кадру, и переопределить метод windowClosing(WindowEvent e). В этом методе вы сможете вызывать любые методы, которые хотите вызвать до закрытия окна.

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

Если вы хотите, чтобы что-то запускалось при выключении Java VM, вам следует взглянуть на

Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

        @Override
        public void run() {
            //The stuff you want to do at shutdown.
        }
    }));

Пожалуйста, прочитайте здесь для получения дополнительной информации.

Вам также следует установить DefaultCloseOperation вашего Окна, если вы хотите закрыть свою Программу (и закрыть свою Java VM), когда JFrame закрыт.

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Я думаю, что выпросить.Надеюсь, это поможет.

...