Как вызвать поток ShutdownHook с помощью операции закрытия окна DISPOSE_ON_CLOSE или EXIT_ON_CLOSE - PullRequest
1 голос
/ 01 июня 2011

Предполагая, что Runtime.getRuntime().addShutdownHook(new Thread() был настроен правильно, как можно вызывать поток ShutdownHook, когда окно приложения Java (JFrame) закрыто (в данном случае это единственное окно), и операция закрытия окна удаления по умолчанию - DISPOSE_ON_CLOSE или EXIT_ON_CLOSE?

Обратите внимание, что для команды quit, обработанной с помощью System.exit(0), который затем подается через поток ShutdownHook, приложение завершается корректно, так как все связанные потоки завершаются до выхода из приложения Java.,Поэтому я хочу сделать то же самое, закрыв окно JFrame и завершив очистку потока ShutdownHook.

Ответы [ 3 ]

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

frame.addWindowListener() и переопределить windowClosed(WindowEvent e). Судя по вашему вопросу, вам нужно просто обработать событие, когда окно закроется.

удачи!

1 голос
/ 02 июня 2011

Это работает в соответствии с вашей спецификацией.Если я закрываю фрейм, нажимая кнопку X, вызывается хук отключения.

import javax.swing.*;

class ShutDownHookDemo {

    public static void endMessage() {
        // clean up threads here..
        System.out.println("Thanks for using the app.");
    }

    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                endMessage();
            }
        };
        Runtime.getRuntime().addShutdownHook(t);

        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(300,300);

        f.setVisible(true);
    }
}
0 голосов
/ 01 июня 2011
Runtime.getRuntime().addShutdownHook(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...