繁体   English   中英

Java Swing关闭消息框

[英]Java swing closing message box

当用户关闭我的程序时,该程序需要关闭一些后台进程,这些进程可能需要一段时间才能关闭。 因此,我希望在出现消息框并通知用户时通知用户,然后在完成所有后台进程后,该消息框应消失。

与此类似的一个示例是,当您关闭Eclipse时,将出现一个消息框,通知用户该环境正在与其他关闭进程一起保存。

我该怎么做呢?

您可以 WindowListener 添加到顶级JFrame中,侦听windowClosing事件,然后弹出一个对话框。 就使对话框自行关闭而言,您可能需要使用JProgressBar来通知用户还剩多少时间(请参阅本教程 )。 假设您使用的是SwingWorker ,则可以让SwingWorker在完成处理后(在done方法中)调用JDialog的dispose方法。

您可以使用ProgressBar创建一个模态java.swing.JDialog

实际上,它比您想象的要容易。 要捕获窗口关闭事件,您需要将addWindowListener(WindowListener wl)到有问题的JFrame中。 然后,您可以在所需的任何类中覆盖WindowClose方法,从而可以相应地自定义功能。

我刚刚在此链接上找到了这个。

尽管给出的解决方案很干净,但是它们效率不高,因为仅通过侦听主JFrame,您将没有机会将其用于其他关闭机制(请考虑命令行中的Alt+F4Ctrl-C和别的)。

在我看来,最好注册一个关闭钩子 ,该钩子既显示消息对话框,又执行关闭操作。 这样,无论用户选择关闭应用程序的方式如何,所有关闭操作都将正确执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM