关闭程序时运行方法?

2022-09-02 19:43:18

我需要执行一个方法(一个创建文件的方法),当我退出我的程序时,我该怎么做?


答案 1

添加关机挂钩。请参阅此 javadoc

例:

public static void main(String[] args) {
    Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
        public void run() {
            System.out.println("In shutdown hook");
        }
    }, "Shutdown-thread"));
}

答案 2

由于您正在使用Swing。当您关闭应用程序(通过按关闭按钮)时,您只需隐藏框架即可。运行所需的方法,该方法创建文件,然后退出 Frame。这将导致一个优雅的退出。如果有任何错误/异常,您可以将其记录到单独的文件中。

这是代码

package test;

import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;

public class TestFrame extends JFrame{

    public TestFrame thisFrame;

    public TestFrame(){
        this.setSize(400, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
    }

    public static void main(String[] args){
        TestFrame test = new TestFrame();
        test.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentHidden(ComponentEvent e) {
                System.out.println("Replace sysout with your method call");
                ((JFrame)(e.getComponent())).dispose();
            }
        });
    }

}

请注意使用关机挂钩。正如Javadoc中给出的,它指出

当虚拟机因用户注销或系统关闭而终止时,基础操作系统可能只允许固定的关闭和退出时间。因此,尝试任何用户交互或在关机钩子中执行长时间运行的计算是不明智的。


推荐