我扩展了DefaultMutableTreeNode
类,以便每个创建的节点都获得一个唯一的自行生成的ID。原因是用唯一的ID标识DefaultMutableTreeNode
的{{1}}中的每个JTree
。
TreeModel
我想做的是一种接收import java.util.concurrent.atomic.AtomicLong;
import javax.swing.tree.DefaultMutableTreeNode;
public class MyMutableTreeNode extends DefaultMutableTreeNode {
static final AtomicLong NEXT_ID = new AtomicLong(0);
final long nodeId = NEXT_ID.getAndIncrement();
public long getNodeId() {
return nodeId;
}
}
(或类的扩展)作为输入并将JTree
节点附加到其中一个树节点的方法。
我们可能最终会遇到这样的情况:
MyMutableTreeNode
请注意,该方法的返回值应再次为public JTree AppendNodeAt(JTree tree, MyMutableTreeNode newNode, long parentNodeId) {
//TODO
return tree;
}
,并将JTree
添加到存在父节点ID为newNode
的节点的位置。
请注意,由于使用了parentNodeId
扩展类,我们的DefaultMutableTreeNode
也可能需要扩展以容纳它们。
此方法将在递归函数内部使用,其中当前节点仅知道其父节点,而不知道其所属的整个树。