gpt4 book ai didi

java - 禁用 ProgressMonitor 的对话框关闭

转载 作者:行者123 更新时间:2023-11-30 03:58:44 25 4
gpt4 key购买 nike

我正在使用 Swing 的 ProgressMonitor .

这为我生成了这个漂亮的对话框:

enter image description here

老实说,我认为 ProgressMonitor 的设计存在缺陷:如果用户通过按红/白十字关闭对话框,您认为会发生什么?是的,您猜对了:它只是关闭/隐藏对话框,您在后台进行的任何工作当然都会继续。没有办法恢复对话框,据我所知。

关闭窗口应该意味着“取消”或者根本不允许,因为我需要用户等待任务完成或取消它。我如何实现这两个目标?

如果我可以获得对该 JDialog 的引用,那么我可以这样做:

dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

但我无法获得该引用。

更新和最终答案

所以,我并没有告诉你完整的故事。事实上我使用ProgressMonitorInputStream当然在幕后使用 ProgressMonitor ,所以我认为这对于手头的案件来说并不重要。但确实如此!

Andrew 说得对,ProgressMonitor 设置 isCancelled对话框关闭时的标志。这可以通过查看 JDK 源代码来验证。但为了捕获该事件,您需要一个 PropertyChangeListener。使用 ProgressMonitorInputStream 时,您可能没有(像我一样),因为更新 ProgressMonitor 全部由 ProgressMonitorInputStream 负责,因此您不必自己做那部分。我假设 ProgressMonitorInputStream 存在的理由是不必进行样板编码。

我不得不说,与 DIY 方法相比,我发现使用 ProgressMonitorInputStream 的好处非常小,甚至是负面的。

最佳答案

检查ProgressMonitor.isCanceled() ,这确实是 ProgressMonitorDemo确实如此。

关于java - 禁用 ProgressMonitor 的对话框关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com