当你将大量文件从一个文件夹拖放到另一个文件夹时,我需要执行类似操作系统的操作。弹出进度监视器并显示进度。如果发生可恢复的错误,则会显示一个新对话框,询问如何恢复或退出。
我的问题是因为我必须先启动工作线程才能使进度监视器可见,我们可能会在进度监视器出现之前生成一个错误对话框。然后当进度监视器出现时,我们有焦点问题,因为父母不正确。有时它可以工作,并且错误对话框位于顶部并且聚焦,有时,错误对话框位于顶部,但进度监视器是聚焦的。
我在ProgressMonitor文档中运行了非常漂亮的代码,在执行worker之前调用了setMillisToPopup(0)
和setMillisToDecideToPopup(0)
。
在doInBackground()方法中,我立即调用setProgress(1)
徒劳地尝试让进度监视器尽快显示。它经常有效。
如果发生错误,我运行SwingUtilities.invokeAndWait
运行Runnable
以显示对话框并获得结果。
从某种意义上说,这更像是一个焦点问题,但它是由于线程而产生的。
有什么想法吗?我离开基地了吗?