如何计算JTree中的节点数?

时间:2012-12-19 14:17:30

标签: java swing tree jtree

我正在使用JIDE's CheckBoxTree来显示一个嵌套的复选框树,如下例所示:

example image

我想知道树模型包含多少个节点。

如果我调用方法tree.getModel().getChildCount(rootNode),我只会得到直接子项的数量(例如在这种情况下为12),而不是任何嵌套的子项数(20 +)。

2 个答案:

答案 0 :(得分:7)

递归:

public int getNumberOfNodes(TreeModel model)  
{  
    return getNumberOfNodes(model, model.getRoot());  
}  

private int getNumberOfNodes(TreeModel model, Object node)  
{  
    int count = 1;
    int nChildren = model.getChildcount(node);  
    for (int i = 0; i < nChildren; i++)  
    {  
        count += getNumberOfNodes(model, model.getChild(node, i));  
    }  
    return count;  
}

答案 1 :(得分:2)

使用getChild()方法自行遍历树。

http://en.wikipedia.org/wiki/Tree_traversal