假设Runtime.getRuntime().addShutdownHook(new Thread()
已正确设置,当Java应用程序窗口(JFrame
)关闭时(在这种情况下是唯一的窗口)和dispose窗口默认情况下,如何调用ShutdownHook线程关闭操作是DISPOSE_ON_CLOSE
还是EXIT_ON_CLOSE
?
请注意,对于使用System.exit(0)
处理的退出命令,然后通过ShutdownHook线程提供该命令,应用程序将正确终止,因为所有关联的线程在Java应用程序退出之前终止。所以我希望通过关闭JFrame
窗口来完成同样的事情来完成ShutdownHook线程的清理。
答案 0 :(得分:2)
frame.addWindowListener()
并覆盖windowClosed(WindowEvent e)
。从你的问题看,你只需要在窗口关闭时进行事件处理。
答案 1 :(得分:1)
这符合您的规范。如果我通过单击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);
}
}
答案 2 :(得分:0)
Runtime.getRuntime().addShutdownHook(...);