2012-12-19 152 views
1

我使用JIDE's CheckBoxTree顯示覆選框的嵌套的樹狀結構,在這個例子中:如何計算JTree中的節點數?

example image

我想知道樹模型多少節點包含。

如果我打電話給方法tree.getModel().getChildCount(rootNode),我只能得到直接孩子的數量(例如在這種情況下爲12),而不是任何孩子數量進一步嵌套(20+)。

+1

遍歷模型和計算:-)如果節點類型DefaultMutableTreeNode的,還有的API做。如果你是(使用SwingX的話)(任何機會:),它都有用於遍歷任意模型的實用方法。否則,請查看代碼並實施自己。 – kleopatra

+0

您必須遞歸檢查並計算所有節點。這種方式,你也可以忽略文件夾節點,如果你想 – moeTi

回答

6

遞歸:

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; 
} 
+0

非常優雅,輝煌,謝謝。 – Redandwhite

+0

getChildcount應該是getChildCount('Count'的大寫'c') – Blunderchips