1

巨大なログファイルを表示するために使用したいNatTableSWTデータグリッドウィジェットについて質問がありました。

ログファイルのサイズは数GBになる可能性があるため、メモリに完全にロードすることはできません。アプリケーションは、可能な限り少ないヒープスペースを使用する必要があります。したがって、私は、小さなキャッシュメカニズムとファイル内の生の行位置のキャッシュを使用して、ログファイルの行をその場で読み取るメソッドをIDataProvider実装します。getDataValueファイルを開くとき、その内容についてはほとんど何もわかりません。テーブルに最終的に表示する必要のある行の数さえもわかりません。

これは、現在私を驚かせるいくつかの問題につながります。

1)ファイルが完全にスキャンされ、最大行数が確実にわかるまで、(平均行長を使用して)合計行数を見積もる必要があります。これが当てはまるとすぐに、私のgetRowCountメソッドは実際の正しい行数を返します。これはNatTableウィジェットを驚かせているようです。現在の位置を完全に失い、行#1にジャンプします。

2)列の境界線をダブルクリックする(Excelのように列のサイズを自動化する)などの直感的な操作を行うと、プロバイダーを使用してすべての行のセルの内容が突然照会されるため、アプリケーションが完全にフリーズします。虐待!完全なファイル読み取りをトリガーするものは何も必要ありませんでした。

誰かが私にいくつかのヒントを持っていますか?ドキュメントはとても少なくてとても悪いです...どんなヒントも大歓迎です!アプリケーションがフリーズするのを防ぐにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

1)行数を変更すると、選択が保持されないように聞こえます-行数の変更は、バッキングデータの変更を意味するため、安全に再生され、選択を最初の行に設定している可能性があります。行数を変更する前に選択した行を照会し、行数を変更した後に選択をリセットすることができます。

2)列の最大幅を把握するために、テーブルはすべての行のそのセルの各値をクエリする必要があります...幅がゼロになる何かを返すようにページングメカニズムを実装する必要があります行が表示されていない場合、または表示されている列のみに基づいて自動サイズ変更モードの機能を要求するために、NatTableに対してバグを発生させたい場合あります

于 2012-11-16T15:18:31.073 に答える