禁用ProgressMonitor的对话框关闭

时间:2014-03-15 21:51:37

标签: java swing

我正在使用Swing的ProgressMonitor

这为我生成了一个很好的对话框:

enter image description here

老实说,我认为ProgressMonitor的设计有一个缺陷:如果用户通过按红/白十字关闭对话框,您认为会发生什么?是的,你猜对了:它只是关闭/隐藏对话框,当然你在后台做的任何工作都会继续。没有办法让对话框回来,afaik。

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

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

dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);

但我无法得到那个参考。

更新和最终答案

所以,我没有告诉你完整的故事。事实上,我使用的是ProgressMonitorInputStream,其中当然是使用ProgressMonitor,所以我认为对于手头的情况并不重要。但确实如此!

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

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

1 个答案:

答案 0 :(得分:2)