关闭操作的JFrame

The*_*oob 17 java user-interface swing jframe windowlistener

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

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)

May*_*ong 20

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
                }
            });
Run Code Online (Sandbox Code Playgroud)


Rya*_*art 16

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

  • 编辑指向最新的javadoc :-) +1顺便说一句 (2认同)
  • 好吧,点了:)但我通常更喜欢链接到最新的文档! (2认同)

Jef*_*rey 13

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

  • 或者您可以使用[WindowAdapter](http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/WindowAdapter.html)来创建侦听器对象. (2认同)