我一直试图找到答案,但这似乎很难做到。
我想要做的是我有一个树视图和一个文本字段我希望能够搜索,所以只有树视图中的树状项与文本字段显示的匹配。
例如,如果有人写了" lat"在文本字段中,树视图显示文件夹,如" latency" "拉脱维亚"等等。
树视图填充代码就是这个
@FXML
private void fillTreeView() {
// The tree needs a root, and it needs to be a DocumentObject
// so we create an empty folder and hide it
TreeItem<DocumentObject<?>> treeRoot = new TreeItem<>(new Folder());
for (Folder folder : logic.getFolderList()) {
TreeItem<DocumentObject<?>> folderNode = new TreeItem<>(folder);
for (FileReference file : folder.getFileList()) {
TreeItem<DocumentObject<?>> fileNode = new TreeItem<>(file);
folderNode.getChildren().add(fileNode);
}
treeRoot.getChildren().add(folderNode);
treeRoot.setExpanded(true);
}
treeNav.setRoot(treeRoot);
treeNav.setShowRoot(false);
}
然后我希望Textfield搜索两个treeitems并显示用户搜索的内容
答案 0 :(得分:3)
如果您只是过滤根节点的直接子节点,那么它非常简单。只需将顶级节点保留在单独的ObservableList
中,在其周围包裹FilteredList
,然后使用Bindings.bindContent()
确保根节点的子节点列表包含与FilteredList
。
假设您的DocumentObject
有一个方法,请说getName()
返回您要应用过滤器的文本,并且您有一个名为TextField
的{{1}}用户键入过滤器文本,这看起来像:
textField
如果您想过滤整个树,那么您需要在每个级别执行相同的操作....