2016-09-14 82 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)); 

     }