Добавьте один и тот же DefaultMutableTreeNode в 2 разных DefaultMutableTreeNode
У меня есть DefaultMutableTreeNode("птицы"), который имеет n детей. Теперь я хочу добавить этот узел к двум разным родителям DefaultMutableTreeNode("animals") и DefaultMutableTreeNodes ("animals2").
Но так как метод добавления или вставки DefaultMutableTreeNode сначала удаляет дочерний элемент из его родительского. DefaultMutableTreeNode("birds") добавляется только в один из родительских узлов. В зависимости от того, что называется позже.
Есть ли способ обойти это?
DefaultMutableTreeNode birds = new DefaultMutableTreeNode("birds");
DefaultMutableTreeNode animals = new DefaultMutableTreeNode("animals");
DefaultMutableTreeNode animals2 = new DefaultMutableTreeNode("animals2");
animals.add(birds);
animals2.add(birds);
2 ответа
Я наконец закончил с нижеприведенным решением
JTree.DynamicUtilTreeNode.createChildren(DefaultMutableTreeNode parent, Object children)
JTree myTree = new JTree(parent)
В качестве входных данных используется корневой узел, а дочерний объект может быть массивом, вектором или хеш-таблицей. Сначала я использовал hashtable для хранения всех дочерних элементов дерева (птиц), а затем добавил их в 2 различных корневых узла (animals & animals2).
Если я правильно понимаю вашу проблему, лучше всего создать метод, который обеспечивает "иерархию птиц":
private DefaultMutableTreeNode createBirdsNode() {
DefaultMutableTreeNode birds = new DefaultMutableTreeNode("birds");
// add another nodes to birds node.
return birds;
}
И позже вы можете использовать этот метод, чтобы добавить полную иерархию.
animals.add(createBirdsNode());
animals2.add(createBirdsNode());