gpt4 book ai didi

recursion - 展开包含所选项目的 TreeView(父)节点

转载 作者:行者123 更新时间:2023-12-02 23:05:12 25 4
gpt4 key购买 nike

我有一个来自 User 对象的 TreeView。 TreeView 代表用户的层次结构:

  • 大师1
    • super 1
    • super 2
      • 用户1
      • 用户2
    • super 3
      • 用户3
    • super 4
  • 大师2
  • ...

当 TreeView 初始化时,每个 TreeItem 都会折叠起来。但是,加载 FXML 时,可能会从另一个 FXML 文件传递​​ TreeItem 对象。例如:User3已通过:

selectedUserTreeItem = (TreeItem<User>) currentNavigation.getPassthroughObject(); //this is the User3 TreeItem

我尝试使用递归函数来展开 selecterUserTreeItem 中的所有父节点

if (selectedUserTreeItem != null) {
expandTreeView(selectedUserTreeItem);
}

tvUsers.setRoot(rootItem);

这是我到目前为止所拥有的:

private void expandTreeView(TreeItem<User> selectedItem) {        
if (selectedItem != null) {
System.out.println(selectedItem);
if (selectedItem.isLeaf() == false) {
selectedItem.setExpanded(true);
}
TreeItem<User> parent = selectedItem.getParent();
expandTreeView(parent);
} else {
System.out.println("null");
}
}

我认为它必须与以下事实有关:该函数是一个 void 函数,并且我想它应该返回一个 TreeItem 对象,但由于某种原因我没有成功做到这一点。

有人能指出我正确的方向吗?

最佳答案

好的,我注意到在您的 ExpandTreeView() 方法中,您展开了该节点,然后递归到前一个节点来展开该节点。在我自己的代码中,我从根扩展到叶子,所以让我们尝试一下:

private static <T> void expandTreeView(TreeItem<T> selectedItem) {
if (selectedItem != null) {
expandTreeView(selectedItem.getParent());
if (!selectedItem.isLeaf()) {
selectedItem.setExpanded(true);
}
}
}

关于recursion - 展开包含所选项目的 TreeView(父)节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com