【问题标题】:Set two root nodes for TreeView为 TreeView 设置两个根节点
【发布时间】:2026-01-07 18:05:01
【问题描述】:

有没有办法为一个 TreeView 设置两个根节点?

我发现了很多简单的 TreeView 示例,但对于我的情况没有有用的示例。

【问题讨论】:

  • 我也面临同样的问题。你找到解决这个问题的方法了吗?如果是,请提供您的解决方案。

标签: javafx javafx-2 javafx-8


【解决方案1】:

否:一棵树只有一个根节点。

要获得您想要的效果,请创建一个虚拟根节点并将您的两个节点添加到其中。用虚拟根节点创建TreeView并调用tree.setShowRoot(false),这样虚拟节点就不会出现了。

final TreeItem<String> root1 = new TreeItem<>("root 1");
final TreeItem<String> root2 = new TreeItem<>("root 2");
final TreeView<String> tree = createTreeView(root1, root2);

// ...

private TreeView<String> createTreeView(TreeItem<String> root1, TreeItem<String> root2) {
    TreeItem<String> dummyRoot = new TreeItem<>();
    dummyRoot.getChildren().addAll(root1, root2);
    TreeView<String> tree = new TreeView<>(dummyRoot);
    tree.setShowRoot(false);
    return tree ;
}

【讨论】:

  • 是的,这是一个可能的解决方案。但后来它会使代码变得非常复杂。有没有替代方案?
  • 是的,我确实做到了。所以现在,我想知道,是否可以在树视图中的 2 个节点之间设置一个分隔符?或者我应该在 2 个树视图中维护数据?
  • 今天找到了这个答案,哇,James_D 你又救了我的命! :)