2017-06-21 46 views
0

我有一個DefaultMutableTreeNode(「鳥」)它有n個孩子。現在我想將此節點添加到2個不同的父項DefaultMutableTreeNode(「animals」) & DefaultMutableTreeNodes(「animals2」)將相同的DefaultMutableTreeNode添加到2個不同的DefaultMutableTreeNode

但是,由於DefaultMutableTreeNode的添加或插入方法首先從其父節點中刪除子節點。 DefaultMutableTreeNode(「birds」)正在僅添加到其中一個父節點中。無論哪一個被稱爲後來。

有沒有辦法解決這個問題?

感謝

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

不,這是不可能的,因爲'DefaultMutableTreeNode'用於表示樹,但在你的情況下它是一個圖。所以你只能用相同的文本添加一個新節點。 –

+0

那麼解決方案是什麼?我可以複製節點然後添加它嗎?我該如何複製? – mayur2j

+0

就像這樣:'animals2.add(new DefaultMutableTreeNode(「birds」));' –

回答

0

我終於結束了與以下溶液

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

這需要一個根節點作爲輸入,並且子對象可以是數組,向量或哈希表。我最初使用散列表來存儲所有樹的孩子(鳥類),然後將它們添加到2個不同的根節點(動物& animals2)。

1

如果我正確理解你的問題的最好辦法就是創造它提供了「鳥層次」的方法:

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

,以後你可以用這個方法來添加完整的層次結構。

animals.add(createBirdsNode()); 
animals2.add(createBirdsNode()); 
相關問題