在JFrame关闭时运行函数

时间:2013-05-04 08:28:15

标签: java swing jframe windowlistener

void terminate() {}
protected JFrame frame = new JFrame();

当我按下关闭按钮时,如何让frame运行终止功能?

编辑:我试图运行它,但由于某种原因它不打印测试(但程序关闭)。有谁知道可能是什么问题?

frame.addWindowListener(new WindowAdapter() {
    public void WindowClosing(WindowEvent e) {
        System.out.println("test");
        frame.dispose();
    }
});

4 个答案:

答案 0 :(得分:17)

您可以使用addWindowListener

frame.addWindowListener(new WindowAdapter()
{
    public void windowClosing(WindowEvent e)
    {
        ... //call terminate
        ...
    }
});

另见void windowClosing(WindowEvent e)Class WindowAdapter

答案 1 :(得分:14)

您不仅需要添加窗口侦听器,还必须将默认关闭操作设置为关闭时不执行任何操作。这允许您的代码执行。

    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent event) {
            exitProcedure();
        }
    });

最后,您必须调用System exit来实际停止运行程序。

public void exitProcedure() {
    frame.dispose();
    System.exit(0);
}

答案 2 :(得分:1)

如果要在JFrame关闭后终止程序,则必须在JFrame上设置默认关闭操作。

在JFrame的构造函数中写:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

如果你只是想在窗口关闭时调用方法而不是终止整个程序,那么请选择Maroun的答案。

答案 3 :(得分:1)

Frame.dispose()方法不终止程序。要终止程序,您需要调用System.exit(0)方法