0

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();
4

0 に答える 0