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

Swing 将相同的DefaultMutableTreeNode添加到2个不同的DefaultMutableTreeNode,swing,jtree,defaultmutabletreenode,Swing,Jtree,Defaultmutabletreenode,我有一个DefaultMutableTreeNodebirds,它有n个孩子。现在,我想将此节点添加到两个不同的父节点DefaultMutableTreeNodeanimals&DefaultMutableTreeNodeAnimals2 但由于DefaultMutableTreeNode的add或insert方法首先从其父级移除子级。DefaultMutableTreeNodebirds仅添加到父节点之一中。以后再打哪个电话 这有什么办法吗 DefaultMutableTreeNode bir

我有一个DefaultMutableTreeNodebirds,它有n个孩子。现在,我想将此节点添加到两个不同的父节点DefaultMutableTreeNodeanimals&DefaultMutableTreeNodeAnimals2

但由于DefaultMutableTreeNode的add或insert方法首先从其父级移除子级。DefaultMutableTreeNodebirds仅添加到父节点之一中。以后再打哪个电话

这有什么办法吗

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

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

private DefaultMutableTreeNode createBirdsNode() {
    DefaultMutableTreeNode birds = new DefaultMutableTreeNode("birds");
    // add another nodes to birds node.
    return birds;
}
稍后,您可以使用此方法添加完整的层次结构

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

我最终得出以下解决方案

JTree.DynamicUtilTreeNode.createChildrenDefaultMutableTreeNode父对象子对象 JTree myTree=新的JTreeparent


这将根节点作为输入,子对象可以是数组、向量或哈希表。我最初使用哈希表存储树的所有子节点,然后将它们添加到2个不同的根节点Animals&animals2。

不,这是不可能的,因为DefaultMutableTreeNode用于表示树,但在您的例子中,它是一个图。因此,您只能添加具有相同文本的新节点。那么解决方案是什么?我可以复制节点然后添加它吗?如何复制?类似这样的内容:animals2.addnew DefaultMutableTreeNodebirds;但这不会添加已经存在的birds节点的子节点。我不想创建没有子节点的新节点。我只想将该节点添加到另一个父节点。这似乎很简单,但却没有任何解释。