JavaFX TreeView查找与给定值匹配的任意深度的TreeItem

wecizke3  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(174)

我试图创建一个方法,做什么标题说。假设我有下面的TreeView,我想添加一个搜索功能,其中用户可以给予例如值desktop,并使用该方法获得具有给定值treeItem.getValue();的第一个TreeItem

我需要的正是这个treeView.getChildren_InAnyDepth_MatchingValue("value");

假设我想让它从TreeView的根开始搜索。

Java代码:

/**
* Find the first TreeItem matching the given value
* 
* @param item
*/
public TreeItem getTreeViewItem(TreeItem<String> item , String value) {
    if (item != null && item.getValue().equals(value))
        return  item;
                
    for (TreeItem<String> child : item.getChildren())
        getTreeViewItem(child, value);
                
    return null;
}

上面的代码总是因为某些原因返回null,我现在算不出6个小时了。

uqdfh47h

uqdfh47h1#

我知道这是旧的,但我会回答这个问题,以帮助别人。

public static TreeItem getTreeViewItem(TreeItem<String> item , String value) 
{
  if (item != null && item.getValue().equals(value))
    return  item;

  for (TreeItem<String> child : item.getChildren()){
   TreeItem<String> s=getTreeViewItem(child, value);
   if(s!=null)
       return s;

  }
  return null;
}
cvxl0en2

cvxl0en22#

public static <T> TreeItem<T> getTreeViewItem(TreeItem<T> item, T value) {
    if (item != null) {
        if (item.getValue().equals(value)) return item;
        for (TreeItem<T> child : item.getChildren()) {
            TreeItem<T> s = getTreeViewItem(child, value);
            if (s != null) {
                return s;
            }
        }
    }
    return null;
}

相关问题