当您将大量文件从一个文件夹拖放到另一个文件夹时,我需要做一些类似于操作系统所做的事情。进度监视器弹出并显示进度。如果发生可恢复的错误,则会显示一个新对话框,询问如何恢复或退出。
我的问题是,因为我必须在使进度监视器可见之前启动工作线程,所以我们可能会在进度监视器出现之前生成一个错误对话框。然后当进度监视器出现时,我们有焦点问题,因为出身不正确。有时它可以工作,并且错误对话框在顶部并集中,有时,错误对话框在顶部但进度监视器是集中的。
我正在运行 ProgressMonitor 文档中的非常普通的代码,调用setMillisToPopup(0)
并setMillisToDecideToPopup(0)
在执行工作程序之前。
在 doInBackground() 方法中,我立即setProgress(1)
徒劳地调用以使进度监视器尽快显示。它经常起作用。
如果发生错误,我SwingUtilities.invokeAndWait
会运行Runnable
以显示对话框并获取结果。
从某种意义上说,这更像是一个焦点问题,但它是由于线程造成的。
有任何想法吗?我离基地很远吗?