У меня есть список, заполненный дублирующимися записями. Я использую хеш для хранения каждой уникальной записи из этого списка. Затем каждый ключ указывает на объект типа DefaultMutableTreeNode, который представляет узел JTree. Моя цель состоит в том, чтобы этот узел указывал на все записи из списка, которые имеют тот же самый узел, что и родительский.Вставка динамического узла JTree
Я добавил эти родительские узлы без проблем, но когда дочерние узлы добавлены (через insertNodeInto), появляются только родительские узлы. Ниже приведен фрагмент кода; Очень благодарен за совет/время.
// an unsorted list of items
List<MyObject>list = hash.get(key);
// clause to check for size
if (list.size() > 0) {
// iterate through each item in the list and fetch obj
for (int i=0; i < list.size(); i++) {
MyObject be = list.get(i);
// if object is not in hash, add to hash and point obj to new node
if (!hashParents.containsKey(be)) {
DefaultMutableTreeNode parent =
new DefaultMutableTreeNode(be.getSequence());
// add the key and jtree node to hash
hashParents.put(be, parent);
// insert node to tree, relead model
((DefaultMutableTreeNode)(root)).insert(
new DefaultMutableTreeNode("parent node"),
root.getChildCount());
((DefaultTreeModel)(tree.getModel())).reload();
}
// now that a parent-node exists, create a child
DefaultMutableTreeNode child = new DefaultMutableTreeNode("child");
// insert the new child to the parent (from the hash)
((DefaultTreeModel)(tree.getModel())).insertNodeInto(child, hashParents.get(be),
hashParents.get(be).getChildCount());
// render the tree visible
((DefaultTreeModel)(tree.getModel())).reload();
}
}
что-то неправильно с уведомлением (в фрагменте кода выше, я бы заподозрить простой ванили root.insert, что не сопровождаемый nodeWasInserted). Кроме того, перезагрузка не требуется - после того, как уведомление будет исправлено :-) – kleopatra