如果用户从菜单中选择退出选项,我怎么能抓住一些事情呢? 我的意思是我希望能够管理将要关闭应用程序的用户的事件 但是有些活动正在进行,所以他/她不应该退出。
这是我写的代码。 简而言之:
正在执行录制 - >用户点击退出 - >警告“流程正在运行,您无法执行此操作”(流程继续进行)
一切都在运行 - >用户点击退出 - >申请结束
是否可以通过添加几行代码来解决问题,而无需重写 整个计划?
非常感谢提前 MAX
exitAction = new AbstractAction("Exit") {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
};
exitAction.putValue(Action.NAME, "Exit");
// description
exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit application");
答案 0 :(得分:0)
您需要跟踪您的工作,以便干净地完成这项工作。如果你不能,你可以尝试迭代到所有的jvm线程,并查看你的一些工作线程是否处于可执行状态。
请记住,如果用户愿意,用户可以使用大任务管理器斧头杀死应用程序:)。
答案 1 :(得分:0)
如果通过'running'表示未完成的线程,那么您可以循环已启动的所有线程并调用.join()
。在此之前显示一条消息'等待所有线程完成。你想强行关闭'
答案 2 :(得分:0)
你可以使用一个变量,一个小标志,在你要检查的过程开始时将它设置为true,当它结束时将其设置为false。
然后在结束事件中,您可以检查该变量是真还是假。
答案 3 :(得分:0)
如果你没有在你的应用程序中使用线程(我假设你是,但是为了清楚起见而覆盖它),那么,当你退出应用程序时,事件调度线程(EDT)将关闭所有内容你。
否则,正确管理和跟踪系统中的线程非常重要,这样您就可以在关闭系统之前结束它们。有很多方法可以做到这一点(请不要使用stop()
并尽量避免destroy()
)。我的建议是,在你的线程中,花点时间检查它们是否应该关闭(系统在关闭时设置的标志就是这种可能性)。这样,您可以清理线程,保存任何数据(保存到文件或其他任何内容,如果这是您需要做的事情),然后干净地关闭。