[英]about override run() method of GUI in main method
问题是,当我关闭我的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) {
之前应该起作用,最后将我的列表打印到文件中,但不会。 如果您能帮助我,并解释为什么当然,我会很高兴。
您应该添加一个将WindowAdapter
扩展到您的框架的侦听器,并重写方法windowClosing(WindowEvent e)
。 在此方法中,您将能够在关闭窗口之前调用要调用的任何方法。
你需要
JFrame.DO_NOTHING_ON_CLOSE
(如果窗口是JFrame) 如果要在Java VM关闭时运行某些东西,那么应该看看
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
//The stuff you want to do at shutdown.
}
}));
请阅读此处以获取更多信息。
如果要在关闭JFrame时关闭程序(并关闭Java VM),还应该设置Window的DefaultCloseOperation。
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这是我想您要的。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.