我目前正试图有没有办法强制JTree中的节点必须是唯一的,最好不用编写TreeModel的实现?
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
DefaultMutableTreeNode child = new DefaultMutableTreeNode("String");
if (model.getIndexOfChild(root, child) == -1) {
model.insertNodeInto(child, root, root.getChildCount());
}
model.reload(root);
我使用'isNodeChild()' method in MutableTreeNode
而不是在TreeModel的getIndexOfChild()
方法也试过。
这似乎应该是一个非常平凡的事情:做一个给定的节点在树中,看看是否有一个具有指定的值(在这种情况下,String
),已经存在的子节点。如果有,请不要添加新的子节点。否则,将该节点添加为小孩。
对此提出建议?
真的不因为JTrees任何值由修改视图可以在TreeCellRenderer中,RowFilter只能访问模型 – mKorbel
有什么问题?顺便说一句:不要调用重新加载 - 插入模型api照顾正确的通知 – kleopatra
@kleopatra检查下面的答案。 model.getIndexOfChild()没有做他认为应该做的事。当他搜索索引是否存在时,它不搜索字符串,它搜索DefaultMutableTreeNode。 – JBuenoJr