问题是,当我关闭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) {
之前它应该可以工作,最后将我的列表打印到文件中,但事实并非如此。如果你能帮助我并解释为什么当然_我会很高兴。
答案 0 :(得分:3)
您应该添加一个将WindowAdapter
扩展到您的框架的侦听器,并覆盖方法windowClosing(WindowEvent e)
。在此方法中,您可以在关闭窗口之前调用要调用的任何方法。
答案 1 :(得分:3)
你需要
JFrame.DO_NOTHING_ON_CLOSE
(如果窗口是JFrame)答案 2 :(得分:2)
如果您希望在Java VM关闭时运行某些东西,那么您应该看看
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
//The stuff you want to do at shutdown.
}
}));
请阅读here以获取更多信息。
如果要在JFrame关闭时关闭Programm(并关闭Java VM),也应该设置Window的DefaultCloseOperation。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这就是我想你所要求的。希望这会有所帮助。