2016-08-26 1 views
2

Javaスイングテーブルモデルでは、テーブルの変更、追加、削除などを実行できます。コンポーネントが可視性でない場合、これらのメソッド呼び出しが高価なのかどうか疑問です。TableModelメソッドが高価であると表示されない場合

たとえば、別のウィンドウがそれをカバーしています。または、非アクティブなタブにあります。

+0

「高価」という意味を定義できますか?コンポーネントが表示されているときにこれらの呼び出しが「高価」であることに気付きましたか? – copeg

+0

スワイプアプリケーションでは、スタティックテキストのビューではラグが頻繁に発生しますが、非表示のタブコンポーネントにはテーブルの更新が多く発生します。 – delita

+0

この遅れを示す[mcve]を投稿できますか?遅延は 'JTable'の典型的な苦情ではなく、しばしばスレッディングの問題によるものです(@trashgodの回答を参照) – copeg

答えて

5

JTablerendereringのみ可視細胞をレンダリングするflyweight patternを使用して、更新イベントを多数発射の影響を最小限に抑えます。このアプローチの概要はhereです。この関連性のあるexampleは、何千もの行にスケールされますが、希望のパフォーマンスを確認するにはprofileにする必要があります。

静的なテキストが表示されているスイングアプリケーションでは、しばしば隠れていることがわかりましたが、非表示のタブコンポーネントには大きなテーブルの更新があります。

示されているように、SwingWorkerを使用して、不定期待ち時間を管理します。

0

私はこれらのイベントにどのように応答するのかについてアプリケーション自体に依存すると思います。

これらのイベントに基づいて何らかのバックグラウンドタスクを実行する必要があるとします。

+0

私はレコードを保持するためにバックグラウンドタスクが必要であると仮定します。しかし、EDTスレッドの負荷については、部分的に/完全に見えなくても再描画するための「ダーティ」領域が存在することが懸念されます。 – delita

関連する問題