如何在Java SwingWorker执行期间获取用户信息?

时间:2013-08-21 15:34:38

标签: java focus swingworker

当你将大量文件从一个文件夹拖放到另一个文件夹时,我需要执行类似操作系统的操作。弹出进度监视器并显示进度。如果发生可恢复的错误,则会显示一个新对话框,询问如何恢复或退出。

我的问题是因为我必须先启动工作线程才能使进度监视器可见,我们可能会在进度监视器出现之前生成一个错误对话框。然后当进度监视器出现时,我们有焦点问题,因为父母不正确。有时它可以工作,并且错误对话框位于顶部并且聚焦,有时,错误对话框位于顶部,但进度监视器是聚焦的。

我在ProgressMonitor文档中运行了非常漂亮的代码,在执行worker之前调用了setMillisToPopup(0)setMillisToDecideToPopup(0)

在doInBackground()方法中,我立即调用setProgress(1)徒劳地尝试让进度监视器尽快显示。它经常有效。

如果发生错误,我运行SwingUtilities.invokeAndWait运行Runnable以显示对话框并获得结果。

从某种意义上说,这更像是一个焦点问题,但它是由于线程而产生的。

有什么想法吗?我离开基地了吗?

0 个答案:

没有答案