18

我想知道是否有办法通过单击“X”让程序在关闭 JFrame 之前执行一些代码。该setDefaultCloseOperation()方法只需要一个整数。

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
4

3 回答 3

22
this.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    int i=JOptionPane.showConfirmDialog(null, "Seguro que quiere salir?");
                    if(i==0)
                        System.exit(0);//cierra aplicacion
                }
            });
于 2013-11-02T06:25:15.243 回答
16

@Jeffrey 有一个很好的答案,但你应该考虑你想要做什么。如果您真的想在关闭框架时做某事,那么 WindowListener 就是要走的路。但是,如果您正在寻找一个地方来做一些清理和优雅的关闭工作,那么您可能需要一个关闭挂钩。使用 WindowListener,代码只会被触发,正如你所说,用户“点击 X”。但是,如果用户在终端的前台启动应用程序并使用 Ctrl+C 将其终止,该怎么办?如果用户从命令行或任务管理器中终止进程怎么办?

于 2012-05-06T04:48:36.137 回答
13

您可能有兴趣使用WindowListener. WindowListener教程。_

于 2012-05-06T04:40:31.627 回答