私はJavaSwingを使用してコードを書いています。基本的には、長いタスクを処理します。タスクの実行中に、GIF画像を含む待機中のポップアップウィンドウが必要です。
私の質問はそれです
final InfoDialog infoDialog = new InfoDialog("Parsing file: " + fileToBeUploaded.getName());
final File finalFileToBeUploaded = fileToBeUploaded;
class FileParsingWorker extends SwingWorker<Void, String> {
@Override
protected Void doInBackground() throws Exception {
String text = fileParsers.parseFile(finalFileToBeUploaded);
publish(text);
return null;
}
@Override
protected void process(List<String> chunks) {
infoDialog.setVisible(false);
}
}
infoDialog.setVisible(true);
FileParsingWorker fileParsingWorker = new FileParsingWorker();
fileParsingWorker.execute();
InfoDialogは、GIFアニメーションが含まれる小さなUIポップアップウィンドウです。基本的に、私は長いタスクをワーカーに配置しましたが、UIのsetVisiblesは2か所に配置されています。スレッドでInfoDialogUIを実行して、そのコードを再利用できる方法があるかどうかを考えています。
私が抱えている問題は、意図的に停止するまで、InfoDialogを無期限に実行しようとすることです。setVisible(true)をスレッドに入れると、そのスレッドはすぐに終了し、UIは更新されません。
誰かがこれを行う方法を教えてもらえますか?