防止关闭Java Swing应用程序

9
如何防止用户点击关闭按钮时关闭Java Swing应用程序?

1
这里有一个更基本的问题:如果用户无法通过关闭窗口退出您的应用程序,他们应该如何退出? - Avrom
2个回答

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中定义):使用System exit方法退出应用程序。仅在应用程序中使用此选项。


你能给我一个例子,说明当用户关闭窗口时,我该如何捕获此事件吗? 我想在框架被释放之前重置一些静态变量,但我找不到如何实现的信息。因为在下一次重新加载时,由于已经设置了这些变量的值,所以该框架会出现错误行为。 - Johnydep
@Johnydep - 你不应该在评论中提问,而是应该作为一个完整的问题来提出,所以下次请这样做。简短回答:你创建的JFrame是一个窗口,你可以添加一个WindowListener。 - Gnoupi
好的,下次我会小心的 ;) - Johnydep
这主要是针对类似Windows的系统。在Mac上,您可以按Cmd+Q并关闭应用程序。也许在这个方向上提供一个解决方案会更好。 - Federico Zancan
@FedericoZancan - 这个问题是关于如何防止用户在点击关闭按钮时应用程序关闭的。Cmd+Q在Windows系统上与alt+F4相同。阻止这些信号是另一个话题。 - Gnoupi

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

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

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