在我的插件中,我使用 JFace TreeViewer 在树中显示数据。默认情况下,树不会展开,只有在单击 + 时才会展开到级别。但是我需要对树的整个项目执行搜索(用户输入的文本),而不仅仅是显示的项目。我知道只有在单击 + 后才会延迟加载所有子级项目。有没有办法检索树的所有项目而不仅仅是显示的项目。?
问问题
1009 次
2 回答
2
在树中搜索通常是使用 FilteredTree 类实现的,它为您提供了一棵树,上面有一个文本框,用于放置您的查询。然后 FilteredTree 类管理过滤操作。您可以在首选项对话框中看到它的实际效果。
即使这不太符合您的要求,您也可以参考 FilteredTree 源代码来帮助您实现自己的搜索工具。
于 2012-07-12T15:17:47.570 回答
0
public void searchTree(String searchtext) {
viewer.collapseAll();
final int itemCount = viewer.getTree().getItemCount();
for (int itemIndex = 0; itemIndex < itemCount; itemIndex++) {
TreeItem item = viewer.getTree().getItem(itemIndex);
if (item.getData().toString().toUpperCase().contains(searchtext.toUpperCase())) {
viewer.expandToLevel(item.getData(), TreeViewer.ALL_LEVELS);
for (int i = 0; i < item.getItems().length; i++) {
if (item.getItem(i).getData().toString().toUpperCase().contains(searchtext.toUpperCase())) {
item.getItem(i).setBackground(new Color(Display.getCurrent(), 204, 255, 153));
}
}
} else {
item.setForeground(new Color(Display.getCurrent(), 0, 0, 0));
}
}
}
希望这能解决你的问题
于 2021-02-10T14:35:41.590 回答