Java:在Windows和Linux上处理注销或关闭

Mic*_*vis 5 java linux windows swing

除了使用JNI之外,Java GUI应用程序是否有办法响应系统关闭或注销事件?(在Windows上,JNI会在Linux上使用WM_QUERYENDSESSION吗?)

该方法应该允许程序提示用户保存等,然后继续注销过程.

Pow*_*ord 4

据我所知,Java 中没有办法捕获系统关闭或注销事件。

但是,您可以通过添加 shutdown hook来捕获 JVM 何时终止。

AWT 的WindowAdapter还具有一个 windowClosing 事件,您可以覆盖该事件并将其挂钩到您想要监视的窗口。Swing 继承了这一点;我相信 SWT 也是如此。请注意,如果您覆盖此事件,则必须手动处置窗口!

我相信 MS Windows 将在关闭时触发这些事件。我相信 Linux/UNIX 上的 SIGTERM 会起到同样的作用,尽管如果是在关闭期间,Linux 会在不久后对应用程序发出 SIGKILL 信号。