如何在Swing应用程序中取消Windows关机?

3

我有一个Swing应用程序,我想在Windows关闭时向用户显示确认框,并且如果用户选择取消,则关闭过程应该中止。

我在论坛中阅读了几个讨论,但没有得到明确的答案。如果有人已经成功实现了这个要求,请指导我如何实现。


1
听起来有些棘手,因为关闭信号会发送到JVM,这将使其对在该VM上运行的线程可用... - Andreas Dolk
2个回答

2

这个问题讨论了如何使用Win32 API程序化地取消Windows关机,并给出了一个非常简单的答案。也许...你只需要编写一些JNI/JNA代码,就可以从Java中执行相同的操作。


根据http://www.personalmicrocosms.com/pages/blog.aspx?b=64的说法,它可以与SWT/JFace一起使用。虽然是不同的技术,但开源并且查看SWT/JFace可能有助于实现类似于纯Java或Swing的东西。 - Andreas Dolk
让事情变得更加复杂的是:如果 JVM 是从控制台(使用 cmd.exe 或批处理文件)启动的,则关闭事件将发送到控制台而不是 JVM...因此,请确保使用 MS-DOS 启动命令来运行 JVM。 - Andreas Dolk

0
将以下代码添加到按钮的事件监听器中:
Runtime.getRuntime().exec("shutdown -a");

是的,但真正的问题是从Swing“应用程序”(线程)中捕获Windows关闭事件。 - Andreas Dolk
请仔细查看问题行,“如果用户选择取消,则关机过程应该中止。” 他可以使用我提供的代码来中止关机,尽管我没有提供捕获系统关机事件的代码。虽然我提供的不是完整的解决方案,但他可以使用这种技术……我是对的吗? - professionalcoder2010
你有任何可以识别关机事件是否已被触发的工作示例吗? - vinee
这个问题有两个要求。
  1. 当我的Swing应用程序正在运行时,用户尝试关闭窗口,Swing应用程序应该能够捕获窗口关闭事件。如何做到这一点?
  2. 第二部分是当应用程序成功地捕获了窗口关闭事件。在这种情况下,用户将被呈现一个对话框,以继续或取消关闭。在这种情况下,如果用户按下取消按钮,我该如何停止关闭进程。
- vinee

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