-4
我有這樣的數據(還有其他數據,如百分比,但現在並不重要)的列表,可以改變:動態在JTree節點添加
1
1.1
1.1.1
1.1.2
1.2
2
2.1
2.2
我如何輕鬆地構建水平工作適合任何給定級別的JTree? 可以用遞歸完成嗎? 什麼是最好的方法?
非常感謝。
我有這樣的數據(還有其他數據,如百分比,但現在並不重要)的列表,可以改變:動態在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));
}
請您詳細說明您已經嘗試了什麼,以及爲什麼它沒有按照您的要求進行操作? –