3

Eclipse RCP (4) を使用して小さなテール アプリケーションを作成しています。メイン ウィンドウにファイルの内容を表示したいと考えています。私の最初のアイデアは、SWTListコンポーネントを使用することでしたが、私の問題は、非常に大きなファイル (100000 行以上) を開くListと、それに対処できないことです。これにどのコンポーネントを使用すればよいか分かりますか?

いくつかの基準に応じてレコードをフィルタリングおよび/または強調表示したいのですが、変更したくないので読み取り専用です。

もう 1 つ: 任意に大きなファイル (10 GB など) をメモリにロードできないため、改行文字の位置を aListに読み込み、具体的な行をString表示するときにのみ a にロードします。したがって、線が表示されたときにのみ線をレンダリングするコンポーネントが必要です。

4

1 に答える 1

0

を使用SWT.VIRTUALして、データの遅延読み込みを実現できます。 テーブルと SWT.VIRTUAL を使用した例を次に示します

ただし、10GB は大量の情報です。どういうわけか、ファイルを多くのチャンクに分割し、その特定の部分をロードします。

[編集]: 知っておくべきこと:

3.1 以降、TableViewer は SWT.VIRTUAL フラグをサポートするようになりました。基になるテーブルが SWT.VIRTUAL の場合、コンテンツ プロバイダーは IStructuredContentProvider の代わりに ILazyContentProvider を実装する場合があります。この場合、ビューアは並べ替えやフィルタリングをサポートしていないことに注意してください。また、この場合、要素が指定されていないか、まだ作成されていない場合、ウィジェット ベースの API は null を返す可能性があることに注意してください。

また、SWT.VIRTUAL のユーザーは、TreeViewer 内の Table から getItems() を使用しないようにする必要があります。これは、TreeViewer が項目を設定するためのコールバックを必ずしも生成しないためです。また、すべてのアイテムを作成するという副作用もあり、SWT.VIRTUAL のパフォーマンスの向上が妨げられます。

約 700k の項目で TreeViewer を実装しようとしました。フィルター/検索機能は非常に遅かった (私は FilteredTree を使用した)。

于 2012-10-30T11:16:15.117 に答える