如何通过点击windows taskbar -> close window
来强制检测java window closing
?通过Windows任务栏强制关闭窗口 - >关闭
我发现窗口关闭接收WINDOW_CLOSING
事件,可以通过增加windowListener
处理。但在这种情况下,窗户无论如何都会关闭。有什么办法可以防止窗户关闭?
如何通过点击windows taskbar -> close window
来强制检测java window closing
?通过Windows任务栏强制关闭窗口 - >关闭
我发现窗口关闭接收WINDOW_CLOSING
事件,可以通过增加windowListener
处理。但在这种情况下,窗户无论如何都会关闭。有什么办法可以防止窗户关闭?
您可以将默认关闭操作设置为DO_NOTHING_ON_CLOSE
,并请求用户进行确认。它甚至如果你想通过X按钮关闭框架,组合键一个很常见的做法(即:ALT + F4)或关闭窗口的任何方法:
JFrame frame = new JFrame("Welcome!");
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int option = JOptionPane.showConfirmDialog(null, "Do you really want to exit?");
if (option == JOptionPane.OK_OPTION) {
e.getWindow().dispose();
}
}
});
好的解决方案。但是在按下TaskBar-> Close之后,有没有在'windowClosing'之前调用的方法? – SeniorJD 2014-10-03 14:01:57
嗯...我不知道,因为关闭事件一旦发生就会被处理。无论我使用'windowActivated()'和'windowDeactivated()'方法,都不符合要求。你在评论中说,当按下'ALT + F4'时你已经想出了如何做你需要的东西。你不能在'windowClosing()'实现上做同样的事吗? – dic19 2014-10-03 14:17:40
我试过了,但不起作用。 – SeniorJD 2014-10-03 14:19:46
为了防止窗口关闭您应该在您的JFrame实例上调用
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
,然后通过windowListener实现您的备选关闭过程。
*“有什么方法可以防止窗户关闭吗?”*我当然希望不会。当我(作为用户)告诉应用程序时。关闭,我期望它这样做。否则,我会通过任务管理器杀死它并将其卸载。 – 2014-10-03 13:46:17
从这个角度来看,我的问题听起来很可怕。但我需要这个,因为在接近的时候,艰难的业务流程正在运行,而窗口应该在运行时显示。很容易检测到'Alt + F4'并自己修改Windows'window decorations',所以我希望有任何方法可以解决这个问题。 – SeniorJD 2014-10-03 13:48:34
对不起,希望能分散你的希望,但不仅可以防止窗口被关闭,还可以防止任何taskmanager终止整个进程,只有内核本身可能会强制你的线程停止(通过丢弃任何进一步的执行周期并从管道中删除您的代码) - 但这是非常糟糕的做法,很可能会触发防病毒软件 – specializt 2014-10-03 13:58:10