あるフォルダーから別のフォルダーに大量のファイルをドラッグ アンド ドロップするときにオペレーティング システムが行うことと同様のことを行う必要があります。進行状況モニターがポップアップし、進行状況が表示されます。回復可能なエラーが発生した場合、新しいダイアログが表示され、回復方法または終了する方法を尋ねられます。
私の問題は、進行状況モニターを表示する前にワーカー スレッドを開始する必要があるため、進行状況モニターが表示される前にエラー ダイアログが生成される可能性があることです。その後、進行状況モニターが表示されると、親子関係が正しくないため、フォーカスの問題が発生します。機能する場合があり、エラー ダイアログが上部に表示されてフォーカスされている場合や、エラー ダイアログが上部に表示されているが進行状況モニターにフォーカスが表示されている場合があります。
ワーカーを呼び出しsetMillisToPopup(0)
て実行する前に、ProgressMonitor のドキュメントから非常にバニラなコードを実行しています。setMillisToDecideToPopup(0)
doInBackground() メソッドでsetProgress(1)
、進行状況モニターをできるだけ早く表示するために無駄な試みをすぐに呼び出します。頻繁に機能します。
エラーが発生した場合は、SwingUtilities.invokeAndWait
a を実行しRunnable
てダイアログを表示し、結果を取得します。
ある意味では、これはフォーカスの問題ですが、スレッドが原因で作成されます。
何か案は?私はベースから離れていますか?