将相同的DefaultMutableTreeNode添加到2个不同的DefaultMutableTreeNode

时间:2017-06-21 12:05:18

标签: swing jtree defaultmutabletreenode

我有一个 DefaultMutableTreeNode(" birds"),它有n个孩子。现在我想将此节点添加到2个不同的父节点 DefaultMutableTreeNode(" animals")&的 DefaultMutableTreeNodes(" animals2&#34)即可。

但是,由于DefaultMutableTreeNode的add或insert方法首先从子进程中删除了子进程。 DefaultMutableTreeNode(" birds")仅添加到其中一个父节点中。以后称之为。

有什么方法吗?

DefaultMutableTreeNode birds = new DefaultMutableTreeNode("birds");
DefaultMutableTreeNode animals = new DefaultMutableTreeNode("animals");
DefaultMutableTreeNode animals2 = new DefaultMutableTreeNode("animals2");
animals.add(birds);
animals2.add(birds);

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,最好的方法是创建一个提供“鸟类层次结构”的方法:

private DefaultMutableTreeNode createBirdsNode() {
    DefaultMutableTreeNode birds = new DefaultMutableTreeNode("birds");
    // add another nodes to birds node.
    return birds;
}

稍后您可以使用此方法添加完整的层次结构。

animals.add(createBirdsNode());
animals2.add(createBirdsNode());

答案 1 :(得分:0)

我最终得到了以下解决方案

JTree.DynamicUtilTreeNode.createChildren(DefaultMutableTreeNode parent, Object children) JTree myTree = new JTree(parent)

这将根节点作为输入,子对象可以是数组,向量或哈希表。我最初使用哈希表来存储所有树的孩子(鸟),然后将它们添加到2个不同的根节点(动物和动物2)。