Добавьте один и тот же 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());
Другие вопросы по тегам