0

私はJavaプログラムを作成しており、CPUを多用するメソッドを呼び出す前に、JProgressBarを含むフレームを表示します。メソッドが呼び出される前に表示しますが、メソッドが終了するまでJProgressBarは表示されません。プログレスバーは(まだ)メソッドと相互作用しません。そのため、私は混乱しています。それは次のようなものです:

progressbarframe.setVisible(true); // it is a indeterminate progress bar
heavyLoadMethod();
progressbarframe.dispose();

フレームは表示されますが、進行状況バーはメソッド中に初期化されません。スレッドを使用せずにこれを解決する方法はありますか?最も簡単な方法は何でしょうか?

お時間をいただきありがとうございます

4

2 に答える 2

3

heavyLoadMethodを別のスレッドで呼び出す必要があります。あなたはそれに使用することができますjava.util.concurrent.Executor

Executor executor = java.util.concurrent.Executors.newSingleThreadExecutor();
executor.submit(new Runnable() { public void run() { heavyLoadMethod();}});

これで、メソッドが別のスレッドで呼び出され、進行状況バーが適切に表示されるようになります。

于 2010-09-06T16:15:47.603 に答える
1

EDT が GUI を再描画するのをブロックしています。

問題の完全な説明については、Swing での同時実行に関する Swing チュートリアルのセクションを参照してください。

また、実際の例については、「プログレス バーの使用方法」のセクションをお読みください。

于 2010-09-06T16:06:29.683 に答える