2016-09-14 70 views
-4

我有這樣的數據(還有其他數據,如百分比,但現在並不重要)的列表,可以改變:動態在JTree節點添加

1   
1.1  
1.1.1 
1.1.2 
1.2   
2  
2.1 
2.2 

我如何輕鬆地構建水平工作適合任何給定級別的JTree? 可以用遞歸完成嗎? 什麼是最好的方法?

非常感謝。

+0

請您詳細說明您已經嘗試了什麼,以及爲什麼它沒有按照您的要求進行操作? –

回答

1

是的,它可以很容易地使用遞歸完成。這個想法是檢查樹中是否已經有一個節點可以下降新節點。例如,如果新節點是「1.1.2」,那麼我們必須檢查樹中是否存在節點「1.1」。我寫了一個非常簡單的代碼,它正在工作,我要在這裏應付。如果你不明白什麼,那就讓我知道,我會解釋你。下面給出了檢查樹是否具有特定字符串節點的函數。

public DefaultMutableTreeNode findparentnode(String s,DefaultMutableTreeNode root){ 
    DefaultMutableTreeNode parent=null; 
    for (int i=0;i<root.getChildCount();i++) { 
     if(s.equalsIgnoreCase(((DefaultMutableTreeNode)root.getChildAt(i)).toString())){ 
      parent = (DefaultMutableTreeNode)root.getChildAt(i); 
      break; 
     } 
     else 
      parent=findparentnode(s, (DefaultMutableTreeNode)root.getChildAt(i)); 
    } 
    return parent; 
} 

現在,我們將檢查列表中的每個字符串。我們將跳過字符串的最後部分,並將餘下的值傳遞給函數。要檢查字符串,代碼在下面給出

for(String s:list){ 
      String[] substr=s.split("\\."); 
      String parent=substr[0]; 
      for(int i=1;i<substr.length-1;i++){ 
       parent=parent+ "." + substr[i]; 
      } 
      DefaultMutableTreeNode node=null; 
      node=findparentnode(parent,root); 


      if(node==null) 
       root.add(new DefaultMutableTreeNode(s)); 
      else 
       node.add(new DefaultMutableTreeNode(s)); 

     }