我目前正試圖有沒有辦法強制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