GUI があり、クリック イベントで、データベース クエリを呼び出して複数のグラフを生成しています。すべてのチャートが完了するまでチャートが表示されないということは、最初のチャートが完成してその内容を表示する前に次のチャートに移動する GUI コンポーネントに問題があることを意味します。考えられる理由とそのような問題を回避する方法は何ですか?
1 に答える
3
コンポーネントに問題はありません。あなたのデザインに問題があります。イベントディスパッチスレッドで実行される単一のメソッドで、長時間実行されるクエリとチャートの更新を実行しています。そうすることで、EDT は完全にブロックされ、すべてのクエリが実行され、すべてのグラフが生成されるまで、何も再描画できません。
バックグラウンド スレッドを使用してクエリを実行し、1 つのクエリが終了するたびに EDT でグラフを生成します。SwingWorker クラスはそれを行うのに役立ちます。その API docと、Swing での並行性に関するチュートリアルを読んでください。
于 2012-05-16T07:22:21.087 に答える