0

GUI があり、クリック イベントで、データベース クエリを呼び出して複数のグラフを生成しています。すべてのチャートが完了するまでチャートが表示されないということは、最初のチャートが完成してその内容を表示する前に次のチャートに移動する GUI コンポーネントに問題があることを意味します。考えられる理由とそのような問題を回避する方法は何ですか?

4

1 に答える 1

3

コンポーネントに問題はありません。あなたのデザインに問題があります。イベントディスパッチスレッドで実行される単一のメソッドで、長時間実行されるクエリとチャートの更新を実行しています。そうすることで、EDT は完全にブロックされ、すべてのクエリが実行され、すべてのグラフが生成されるまで、何も再描画できません。

バックグラウンド スレッドを使用してクエリを実行し、1 つのクエリが終了するたびに EDT でグラフを生成します。SwingWorker クラスはそれを行うのに役立ちます。その API docと、Swing での並行性に関するチュートリアルを読んでください。

于 2012-05-16T07:22:21.087 に答える