繁体   English   中英

在 JTree 中动态添加节点

[英]Dynamically add nodes in a JTree

我在一个可以变化的列表中有这样的数据(还有其他数据,如百分比,但现在不重要):

1        
1.1    
1.1.1  
1.1.2  
1.2        
2     
2.1
2.2 

我如何轻松地使用这些级别为任何给定级别构建合适的 JTree? 可以用递归完成吗? 最好的方法是什么?

非常感谢。

是的,它可以使用递归轻松完成。 这个想法是检查树中是否已经有一个节点可以让新节点落下。 例如,如果新节点是“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));

        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM