3

私はSwingアプリケーションを開発していますが、通常はすべて正常に動作します。しかし、GUIに問題があります。

アプリケーションを実行し、たとえば他のウィンドウを最小化しても、アプリケーションは引き続き機能しますが、の中央部分はJFrame非表示または非表示になっています。プログラムロジックの一部を終了すると、GUIが再描画され、再び表示されます。これは、プログラムの実行が終了するまで続きます。

この動作を防ぐためのAPI、GUIを強制的に表示するためのクラス、またはプログレスバーを追加するためのAPIはありますか?

誰かがこの情報を必要とする場合、私はJava1.6を使用してWindowsVistaでこれをテストしています。

4

3 に答える 3

9

GUIが応答しなくなる原因となっている、ある種の遅いIOまたは計算を実行しているように思えます。

あなたがする必要があるのは、別のスレッドで長時間実行されているプロセスを実行することです。

それを行う標準的な方法は、SwingWorkerクラスを使用することです。

Javaチュートリアルには、を適切に使用する方法に関する優れたリソースとチュートリアルがいくつかありますSwingWorker

ここここに、似ていると思う別の質問へのリンクがあります。

表示されているこの動作は、GUIがそれ自体を再描画するために使用するスレッドをブロックしている長時間実行プロセスの結果です。したがって、タスクの実行中は、GUIが再描画できず、JFrame応答しなくなります。

于 2009-06-25T12:44:31.500 に答える
2

jinguyが言うように、あなたは完了するのに長い時間がかかり、バックグラウンドスレッドに入れる必要があるタスクを実行している可能性が高いです。これを正しく行う方法の詳細については、SwingチュートリアルのJavaSunConcurrencyを参照してください。

于 2009-06-25T12:47:57.220 に答える
2

長期にわたるビジネスオペレーションを別のスレッドで実行する必要があるようです。を使用することをお勧めしますSwingWorker

この簡単なを確認してください。

于 2009-06-25T12:48:08.997 に答える