Java 在JFrame close上运行函数

Java 在JFrame close上运行函数,java,swing,jframe,windowlistener,Java,Swing,Jframe,Windowlistener,当我按下关闭按钮时,如何让frame运行终止功能 编辑:我试着运行这个,但由于某种原因它没有打印测试(但是,程序关闭)。有人知道问题出在哪里吗 void terminate() {} protected JFrame frame = new JFrame(); 您可以使用: 请参阅和。如果要在JFrame关闭后终止程序,必须在JFrame上设置默认的关闭操作 在JFrame的构造函数中写入: frame.addWindowListener(new WindowAdapter() { p

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

编辑:我试着运行这个,但由于某种原因它没有打印测试(但是,程序关闭)。有人知道问题出在哪里吗

void terminate() {}
protected JFrame frame = new JFrame();
您可以使用:


请参阅和。

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

在JFrame的构造函数中写入:

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

如果您只想在窗口关闭时调用一个方法,而不终止整个程序,那么可以使用Maroun的答案

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

frame.setDefaultCloseOperation(JFrame.DO\u NOTHING\u ON\u CLOSE);
frame.addWindowListener(新的WindowAdapter(){
@凌驾
公共作废窗口关闭(WindowEvent事件){
退出程序();
}
});
最后,您必须调用System exit来实际停止程序的运行

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

我是否必须创建一个扩展JFrame并实现WindowAdapter的新类?(或者可以将frame保留为JFrame吗?)它还没有真正起作用,我在WindowClosing函数
WindowClosing
上得到警告“来自type new WindowAdapter(){}的方法WindowClosing(WindowEvent)从未在本地使用”,而不是大写的
WindowClosing
。我想同时使用这两种方法(运行一个函数,然后终止)。这是我当前的代码:frame.addWindowListener(new WindowAdapter(){public void WindowClosing(WindowEvent e){System.out.println(“test”);frame.dispose();});问题是它没有打印“test”。你知道可能是什么问题吗?方法是“WindowClosing”,而不是“WindowClosing”。您需要覆盖它,因此它必须是确切的名称。答案为+1,但尤其是
@override
。非常好的建议。不(重新考虑)非常好的建议。:)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
public void exitProcedure() {
    frame.dispose();
    System.exit(0);
}