JavaFX TreeView 在与给定值匹配的任何深度中查找 TreeItem

GOX*_*LUS 2 java treeview javafx

我正在尝试创建一种方法来执行标题所说的操作。假设我有下面的 TreeView ,我想添加一个搜索功能,用户可以在其中提供例如一个值desktop并使用该方法获取具有给定值的第一个 TreeItemtreeItem.getValue();

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

假设我希望它从 TreeView 的根开始搜索。

在此处输入图片说明


代码:

/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,上面的代码总是返回 null,我现在不知道 6 个小时。

小智 7

我知道这是旧的,但我要回答这个以帮助他人。

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;
}
Run Code Online (Sandbox Code Playgroud)