我想提供一个非常简单的“你想保存这份文件吗?”关闭我的申请时的对话。
我使用WindowAdapter
来执行此操作。如果使用任何GUI操作关闭应用程序(单击CLOSE按钮,从任务栏关闭,使用End Task从任务管理器关闭),这将完美地工作。
但是,当用户注销或终止应用程序进程时,JVM应用程序直接接收终止信号。它会关闭所有AWT资源而无需用户确认,也无需调用WindowAdapter
。使用ShutdownHook
,不可能进行任何GUI交互,因为AWT事件调度线程已经停止。
到目前为止,我找到了多种解决此问题的方法:
还有另一种更好的解决方法吗?似乎很奇怪没有标准的方法来实现这么基本和基本的东西。我不能以某种方式再次启动AWT子系统吗?
答案 0 :(得分:2)
主机平台拥有运行应用程序的JVM。在Mac OS X上,您可以使用OSXAdapter
,讨论here。其他系统可能具有类似的机制。一个有用的防御措施是使用java.util.prefs.Preferences
来记录清理信息。它独立于平台,典型的实现为给定平台提供尽力而为的保留。
答案 1 :(得分:1)
也许你复杂非常简单的想法,而不是终止当前的JVM实例
1)隐藏容器
2)保存应用程序属性,
3)关于异常显示JOptionPane有关于
的有意义的事情4)调用System.exit(0);
5)一些最大的应用程序(用Embedded_database存储本地数据)在容器隐藏后几秒钟保存这些进程
0)或许help you this thread关于普通香草Java的解决方法