关闭操作的JFrame

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

 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

您可能对使用WindowListener感兴趣。 WindowListener教程 。

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

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