2016-06-10 4 views
0

Ich habe einen bereits erstellten Java-Baum. Jetzt möchte ich einen neuen Knoten zum bestehenden Knoten in dieser Java-Struktur hinzufügen. Dieser existierende Knoten kann irgendwo in der Struktur sein.Hinzufügen eines neuen Knotens zum bestehenden Knoten in JavaTree mit Java

Meine Baumknoten sind in einer HashMap enthalten und jeder Knoten hat Schlüssel (String) und Wert (Double). Ich kenne seinen Schlüssel und Wert. Also, wie fügt man diesen Knoten hinzu, um den bestehenden Knoten zu korrigieren?

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

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

Im obigen Code für ????? Was muss ich verwenden? Vorhandener Knoten ist ich bereits erstellt. Aber an dieser Stelle wähle ich es zufällig aus und ich kenne nur seinen Schlüssel und Wert.

Wenn ich einen separaten weiteren JavaTree nach dem Hinzufügen dieser neuen Knoten erstellen möchten,

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

in obigen Code, tree = new JTree(root);, was ich für root hinzufügen müssen?

UPDATE: Mehr Codierteil:

 //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); 
      } 

Ich möchte neuen Knoten keys.get(1), values.get(1) hinzuzufügen. Wie kann ich einen neuen Baum hinzufügen und anzeigen?

+1

Können Sie Ihren vollständigen Baum Code schreiben, die sein? –

+0

@ user3747720 Ich aktualisierte meine Frage mit etwas mehr Codierung. Wenn mein Baum groß wird, wie man einen neuen Knoten zu einem existierenden Knoten hinzufügt (ein existierender Knoten kann in der Mitte oder irgendwo in der Struktur sein, kenne ich seinen Schlüssel und Wert). – Emalka

Antwort

1

Ich hoffe, nodeReg ist Karte, so können Sie anode bekommen, indem Sie Methode abrufen und keys.get(1) als Schlüssel übergeben.

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); 

Jetzt wird dieser Baum vier Knoten

root,aNode,bNode,newNode 
+0

Wenn Sie eine klarere Sicht wollen, dann schreiben Sie den Code von DefaultMutableTreeNode, damit ich die add-Methode bekommen kann. –

+0

Es funktioniert gut. Vielen Dank für Ihre Antwort. – Emalka

Verwandte Themen