2010-05-28 169 views
9

如何防止关闭Java swing应用程序,当用户单击关闭按钮时?防止关闭Java swing应用程序

+1

这里是一个更基本的问题:如果用户无法通过关闭窗口退出应用程序,他们是如何应该退出? – Avrom 2010-05-28 17:09:28

回答

12

frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);您的主框架应该防止这种情况。

setDefaultCloseOperation(int)方法允许您选择当用户关闭的JFrame做什么:

  • DO_NOTHING_ON_CLOSE(在WindowConstants中定义):不执行任何操作; 要求程序处理注册WindowListener对象的windowClosing方法 中的 操作。

  • HIDE_ON_CLOSE(在WindowConstants中定义):在调用任何 注册的WindowListener对象后,自动隐藏 框架。

  • DISPOSE_ON_CLOSE(在WindowConstants中定义):自动隐藏 和调用任何 注册的WindowListener对象后处理该帧。

  • EXIT_ON_CLOSE(在JFrame中定义):使用系统退出方法退出应用程序 退出方法。仅在 应用程序中使用此项。

+0

你能给我举一个例子,我怎么能在用户关闭窗口时捕获这个事件?我想在帧被处理之前重置一些静态变量,但是我找不到如何做到这一点的信息。至于下一次重新加载,由于已经设置了这些变量的值,框架的行为是错误的。 – Johnydep 2012-01-30 21:01:28

+0

@Johnydep - 你不应该在评论中提问,而应该是一个完整的[question](http://stackoverflow.com/questions/)问),下次再做。简短回答:您创建的JFrame是一个Window,并且您可以添加一个WindowListener。 – Gnoupi 2012-01-31 18:59:32

+0

好的,下次我会小心;) – Johnydep 2012-02-05 23:13:43

2
JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); 

frame.addWindowListener(new WindowAdapter() { 
// handle window closing 
});