1

大規模で複雑な図を表示する JPanel をカスタマイズしました。データのサイズによっては、paintComponent() でのレンダリングに数分かかる場合があります。次の戦略を探しています。

  • イベントディスパッチスレッドを拘束せずにコンポーネントを描画します。
  • JPanel で何かを描画して、画像がレンダリングされていることをユーザーに知らせます。
  • 別のコンテナのラベルを定期的に更新して進行状況を表示する

私はこれについて少し調査しましたが、SwingWorker を使用してバックグラウンド スレッドを作成し、BufferedImage に描画することが正しい戦略であるかどうか疑問に思っています。タイマーは、ステータスの更新を処理します。クラスメンバー変数はステータスを保持します。

私は正しい軌道に乗っていますか?

4

2 に答える 2

2

の使用を検討する必要がありますSwingWorker。ダイアグラムのレンダリングは別のスレッドで行う必要があります。SwingWorkerはそれを達成するのに役立ちます。

並行処理でのマルチスレッド化を開始するために、sun には非常に役立つ優れたチュートリアルがあります。

于 2009-06-30T13:03:51.930 に答える
1

特別な作業スレッドによって更新された背景画像を使用します。次に、JPanelのpaintComponent()メソッドで、この画像をペイントするだけです。この戦略は、ダブルバッファリングと呼ばれます。背景と前景の画像があります。別のスレッドでデータのペイントが終了した場合は、この画像を前景として設定し、前景の負荷を背景として設定します。JPanelを無効にし、必要に応じて背面の画像にペイントを続けます。

于 2009-06-30T14:53:15.657 に答える