2

私のプロジェクトには、TableViewerデータベースからの約1,000行のデータを表示するがあります。ContentProviderですArrayContentProvider。_

リスト(オブジェクトsetInput()TableViewer)の入力を同じ量のデータを持つ別のリストに変更すると、すべて問題ありません。List<T>しかし、前のものとは異なるサイズで更新したい場合、同じ量のデータで変更した場合の約10倍の時間でアプリケーションがフリーズします。

最初のリストのサイズは1kで、2番目のリストのサイズは約960です。実行はsetInput()メソッドで直接フリーズします。

なぜこれが起こるのか誰かが知っていますか?

4

1 に答える 1

1

その理由は、異なるサイズの List を設定すると、ネイティブの TableItems 全体が再作成されるためだと思います。したがって、テーブルを高速化するには、SWT.Virtual スタイル テーブルを使用する必要があります。仮想テーブルでは、表示されるテーブルアイテムのみが作成されます。他のものはスクロールすると作成されます。

http://git.eclipse.org/c/platform/eclipse.platform.ui.git/tree/examples/org.eclipse.jface.snippets/Eclipse%20JFace%20Snippets/org/eclipse/jface/snippets/viewersを参照してください。例として/Snippet029VirtualTableViewer.javaを参照してください。

于 2012-11-06T07:49:33.123 に答える