2016-06-10 2 views
0

У меня есть уже созданное дерево java. Теперь я хочу добавить новый узел в существующий узел в этом дереве Java. Этот существующий узел может быть любым, где в дереве.Добавить новый узел в существующий узел в JavaTree с помощью Java

Мои узлы дерева включены в HashMap, и каждый узел имеет ключ (String) и значение (Double). Я знаю его ключ и ценность. Итак, как добавить этот узел для исправления существующего узла?

DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(new NodeInfor(check, 0.45)); 

      nodeReg.put(check, newNode); 
      ?????.add(newNode); 

В вышеуказанном коде для ????? что мне нужно использовать? Существующий узел уже создан. Но в этом пункте я выбираю его случайным образом, и я знаю только его ключ и значение.

Если я хочу создать отдельный другой JavaTree после добавления этого нового узла,

   tree = new JTree(root); ------------------???? 
       add(tree); 
       this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       this.setTitle("Sub JTrees"); 
       this.pack(); 
       this.setVisible(true); 

в коде выше, tree = new JTree(root);, что мне нужно добавить для root?

UPDATE: Больше часть кодирования:

 //create root 
     DefaultMutableTreeNode root = new DefaultMutableTreeNode(new NodeInfor(keys.get(0), values.get(0))); 
     // create the child nodes 
     DefaultMutableTreeNode aNode = new DefaultMutableTreeNode(new NodeInfor(keys.get(1), values.get(1))); 
     DefaultMutableTreeNode bNode = new DefaultMutableTreeNode(new NodeInfor(keys.get(2), values.get(2))); 

      nodeReg.put(keys.get(0), root); 
      nodeReg.put(keys.get(1), aNode); 
      nodeReg.put(keys.get(2), bNode); 

      root.add(aNode); 
      root.add(bNode); 
      ----------- 
      ----------- 
      --------- 
      --------- 
      tree = new JTree(root); 
      add(tree); 
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      this.setTitle("First JTree"); 
      this.pack(); 
      this.setVisible(true); 
      --------- 
      ---------- 
      ---------- 
      DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(new NodeInfor(check, 0.45)); 

      nodeReg.put(check, newNode); 
      ?????.add(newNode);-----------------????????? 

      tree = new JTree(???????????);------------?????? 
      add(tree); 
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      this.setTitle("Sub JTree"); 
      this.pack(); 
      this.setVisible(true); 
      } 

Я хочу, чтобы добавить новый узел в keys.get(1), values.get(1). Итак, как добавить и отобразить новое дерево снова?

+1

Вы можете разместить свой полный код дерева? –

+0

@ user3747720 Я обновил свой вопрос с помощью некоторой дополнительной кодировки. Если мое дерево стало большим, как добавить новый узел в существующий узел (существующий может быть посередине или где-либо в дереве, я знаю его ключ и значение). – Emalka

ответ

1

Надеюсь, nodeReg это карта, поэтому вы можете получить anode методом callling get и пройти keys.get(1) как ключ.

DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(new NodeInfor(check, 0.45)); 
nodeReg.put(check, newNode); 
DefaultMutableTreeNode node = nodeReg.get(keys.get(1)); 
node.add(newNode); //add new node to anode 
tree = new JTree(root); 

Теперь это дерево будет иметь четыре узла

root,aNode,bNode,newNode 
+0

Если вы хотите получить более четкое представление, то почтовый код DefaultMutableTreeNode, чтобы я мог получить метод добавления. –

+0

Он отлично работает. Спасибо за ваш ответ. – Emalka

Смежные вопросы