我想創建在添加新節點時的JTree的每個節點的索引(1,1.2,1.3,2.1等等),索引JTree的節點
即
root
|
---1 node
|
---2 node
|
---2.1 node
有沒有人有一個想法,我可以做到這一點?提前感謝您的任何答案。
我想創建在添加新節點時的JTree的每個節點的索引(1,1.2,1.3,2.1等等),索引JTree的節點
即
root
|
---1 node
|
---2 node
|
---2.1 node
有沒有人有一個想法,我可以做到這一點?提前感謝您的任何答案。
由於您沒有告訴我們,如果您已經實現了自己的TableModel,我假設您使用標準JTree和默認模型。檢索節點的指數作爲一個字符串的方法是這樣的:
public String getNodeIndex(JTree tree, TreeNode node) {
TreeNode root = (TreeNode) tree.getModel().getRoot();
if (node == root) {
return "";
}
TreeNode parent = node.getParent();
if (parent == null) {
return null;
}
String parentIndex= getNodeIndex(tree, parent);
if (parentIndex == null) {
return null;
}
return parentIndex+"."+parent.getIndex(node);
}
此代碼應工作,只要你不建立循環到你的樹,彷彿作品遞歸到根。
當您添加一個節點,發現在該級別節點的當前號碼和你的新節點的指標是計數加1
隨着配合物的UI組件,它是更好的區分數據模型和渲染。 因此,我建議你實現一個TreeModel,它返回例如Nodes對象,它可能包含其級別的整數,並且還實現了一個TreeCellRenderer,該TreeCellRenderer使節點呈現。
可以使用父節點在每次渲染時計算索引,可以將要求信息模型的父節點緩存到節點中。 http://download.oracle.com/javase/tutorial/uiswing/components/tree.html#data
如果你需要被點擊父節點時做的事情,你可以用樹將展開監聽器(在本教程中引用)
: 你可以在這裏瞭解如何實現自定義的TreeModel看看
謝謝大家好的想法,並對我遲到的迴應感到抱歉。將索引作爲String返回的方法正是我所需要的。非常感謝! – user609823 2011-06-12 20:04:23