3

JFace でツリー ビューアーを作成していますが、何かを達成したいと考えています。

その中でフィルターを使用しています。フィルターはうまく機能しますが、完全ではありません。メソッドを使用filter.expandAll()すると、フィルタはツリーのすべてのアイテムをフィルタリングしますが、非常に厄介なことがあります。ツリーのすべてのアイテムをフィルタリングしますが、空になったアイテムの親は非表示になりません。

例:
スクリーン ショット - 空の親は非表示になりません
ご覧のとおり、フィルターに一致する項目は "General/Map/New" の 1 つだけです。ただし、実際には子が含まれていないにもかかわらず、すべての親が表示されます。

私のフィルターのコードの一部:

if (element instanceof HotkeyCategory) {
    return true;
} else if (element instanceof HotkeyItem) {
    return ((HotkeyItem) element).getLabel().toLowerCase()
            .matches(searchString.toLowerCase());
}

return false;

上記のとおり、すべての子の親を許可します。しかし、空の親を自動的に隠す方法があるのではないでしょうか?

いくつかのアイデアがありました。ツリービューアにリダイレクトする前にフィルタリングを行い、許可されたアイテムとその親でArrayListを作成するかboolean show;、すべてのアイテムとすべての親に追加してフィルタで返しますが、これらの方法はどれも私を満足させません。それらは、このタスクには少し複雑すぎます。

だから、私の質問は次のとおりです。私が望むものを達成する簡単な方法はありますか?

よろしく。

4

1 に答える 1

0

これを見てください。役立つかもしれません: Vogella ブログ: フィルター処理されたツリーが好きです (Eclipse FilteredTree)

于 2014-01-25T13:46:20.787 に答える