JFrame关闭操作

18

我想知道是否有一种方法,通过点击“X”来让程序在关闭JFrame之前执行一些代码。 setDefaultCloseOperation() 方法只接受一个整数。

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
3个回答

23
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
                }
            });

16

@Jeffrey有一个好的答案,但你应该考虑你想做什么。如果你真的想在框架关闭时做些事情,则WindowListener是正确的方法。然而,如果你正在寻找一个执行清理和正常关闭操作的地方,那么你可能需要一个shutdown hook。使用WindowListener,代码只会像你所说的那样,由用户“点击X”触发。但是,如果用户在终端前台启动应用程序并使用Ctrl+C杀死它呢?如果用户从命令行或任务管理器中杀死了进程呢?


哇,谢谢你的回复。我正在使用这个来在关闭框架时保存一些数据。 - The JAVA Noob
@Sanjay:我选择链接jdk6,因为1)根据我的经验,使用6的人比7更多,2)Runtime.addShutdownHook()在6和7之间没有任何变化。 - Ryan Stewart
2
好的,我明白了 :) 但是我通常更喜欢链接到最新的文档! - COD3BOY

13

非常感谢,这正是我想要的。 - The JAVA Noob
2
你也可以使用WindowAdapter作为创建监听器对象的便利工具。 - Pau Kiat Wee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接