2016-06-10 2 views
0

이미 생성 된 Java 트리가 있습니다. 이제이 Java 트리의 기존 노드에 새 노드를 추가하려고합니다. 이 기존 노드는 트리의 어느 위치 에나있을 수 있습니다.Java를 사용하여 JavaTree의 기존 노드에 새 노드 추가

내 트리 노드는 HashMap에 포함되어 있으며 각 노드에는 key (String) 및 value (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 : 더 코딩 부분 : 나는 keys.get(1), values.get(1)에 새 노드를 추가 할

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

. 그러면 새 트리를 추가하고 다시 표시하는 방법은 무엇입니까?

+1

당신이 당신의 전체 트리 코드를 게시 할 수 가지는 것인가? –

+0

@ user3747720 더 많은 코딩으로 내 질문을 업데이트했습니다. 내 트리가 커지면 기존 노드에 새 노드를 추가하는 방법 (기존 노드는 중간 또는 트리의 어느 위치 에나있을 수 있습니다. 키와 값을 알 수 있습니다). – Emalka

답변

1

희망은 nodeReg입니다. 따라서 은 calling 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