SwingWorker を使用してプロセスを実行し、プロセスの実行中に不確定な進行状況バーをエンド ユーザーに表示する単純なスイング アプリケーションを開発しました。
プロセスが完了するとすぐに、SwingWorker の done() メソッドで ProgressDialog の可視性を false に設定しています。
ここでの問題は、エンドユーザーが親ウィンドウをクリックすると、フォーカスされ、プログレスダイアログがメインウィンドウに戻ることです。これは、ダイアログのモダリティをtrueに設定しようとしたときに、プログラムをそこにのみ保持し、私のプログラムを保持しているためです。 SwingWorker スレッドがまったく開始されません。
私は Swing の初心者なので、両方を一緒に達成する方法を教えてください。
ダイアログにモダリティ tru を設定したときに発生したように、swingworker が停止し、ユーザーがメインをクリックできないようにする必要があります。
コードスニペット :
ProgressDialog myProgressDialog = new ProgressDialog();
myProgressDialog.setVisible(true);
myProgressDialog.setLocationRelativeTo(this);
mySwingWorkerForUpdate = new SwingWorker<String, String>() {
@Override
protected String doInBackground() throws Exception {
//my code here
}
@Override
protected void done() {
super.done();
mySwingWorkerForUpdate = null;
myProgressDialog,setVisibility(false);
}
};
mySwingWorkerForUpdate.execute();