【发布时间】:2012-08-25 07:23:43
【问题描述】:
是否有任何可能的方法将 swing 添加到关闭挂钩中(即,在 VM 关闭时显示一个弹出窗口)?
我意识到如果我尝试创建一个新的 JFrame,它会给我一个错误,因为它尝试注册一个关闭挂钩,但由于 VM 已经关闭,该挂钩失败。我只是想知道实际上是否有任何解决方法
【问题讨论】:
-
我会说不,即使你能,我也建议你不要
-
@MadProgrammer 我环顾四周,找不到任何东西,但我认为这应该是可能的,因为许多应用程序都会给你一个弹出窗口,不仅仅是在关闭时,而且就像你关闭计算机(进而关闭 Java VM)
-
我有一个程序最近抛出异常,因为开发人员正在关闭挂钩中访问 Swing 组件(我认为是在 Java 7 下)。我想说你在尝试遵循这个概念时可能会遇到问题。部分问题在于不知道 JVM 实际处于什么状态,或者关闭挂钩的调用顺序
-
@AlexColeman 当然可以显示一个弹出窗口,但不能像您假设的那样通过关闭挂钩。通常在关窗事件中完成。
-
在 Macintosh 上,您可以拥有一个
ApplicationListener,它具有一个public void handleQuit(ApplicationEvent)方法。如果你想支持/拥有一台 Windows 机器,这是行不通的,因为它在com.apple包中。