这是我的主要方法,它包含一个shutdownhook:
public static void main(String args[]) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
JOptionPane.showMessageDialog(null, "Shutdown hook");
}
});
/* Create and display the form */
java.awt.EventQueue.invokeLater(
new Runnable() {
@Override
public void run() {
Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
MyFrame frame = new MyFrame();
frame.setVisible(true);
}
});
}
问题是JOptionPane
根本没有出现。相反,框架关闭但应用程序本身仍然运行。
PS。我无法使用WindowClosing
事件,因为它不会触发 Mac OS X 上的 Cmd + Q 命令。
答案 0 :(得分:1)
调度线程已经关闭,或者在您提交队列之前可能会关闭。
你需要找到一种捕获quit事件的另一种方法,关闭钩子就在那里你可以在VM退出时整理一下,所以你真的不希望在调用它时在UI中占用更多资源