繁体   English   中英

关于main方法中GUI的重写run()方法

[英]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)
  • 将WindowListener添加到顶级窗口
  • 监听窗口关闭事件,调用您的方法
  • 然后最后使用适当的退出代码(如果没有错误,通常为0)退出JVM。

如果要在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM