2

過去に、特定のフィールドを表示する Swing 要素を更新するために PCS を使用しましたが、すべてが期待どおりに機能しました。しかし、私は現在、多くのフィールドを表示する比較的複雑な (つまり、ひどく設計された) UI に直面しています。データの更新は束になって (約 1,000 フィールドの新しい値を含むネットワーク パケット)、このようなものを処理する適切な方法は何か疑問に思っていました。

私の主な懸念は、データ パケットが来るたびに 1,000 の PropertyChangeEvents がトリガーされ、1,000 の .repaint() (または .revalidate() など) が発生することです。より賢明な方法は、「gui.stopRepainting(); fireAllThePropertyEvents(); gui.restartPainting();」のようなことをするように見えました。それを行う方法はありますか、またはこれを処理するためのより良い方法はありますか?

4

1 に答える 1

3

再描画要求が RepaintManager に渡され、複数の要求が 1 つの再描画に結合されます。

1 つのフォームに 1000 のフィールドがあるのは奇妙だと思います。これが事実であると仮定すると、1000 個すべてが同時に表示されるとは思えません。RepaintManager は目に見えるものだけをペイントするので、オーバーヘッドは思ったほど悪くないと思います。

再描画を停止する方法はわかりませんが、ペインを非表示にし、更新を行ってから再び表示できるかもしれません。

または、何もしないカスタム RepaintManager を作成することもできます。それをインストールし、更新を行ってから、デフォルトのマネージャーを再インストールします。

于 2010-11-03T21:46:58.900 に答える