This content has been marked as final. Show 5 replies
You only need to call model.reload(). It fires all the necessary events itself. See the Javadoc. But you must call it on the EDT thread.
model.reload() will refresh complete tree while i need to refresh only selected node. since my tree is huge and it already takes long time to load. if i refresh whole tree for adding/removing single node it is going to take long time.
suggest me another solution.
I meant model.reload(node), the one you are calling. My suggestion is to omit the next two lines.
model.reload(node) did not work. and i mean , i tired those methods one by one to see the change. but nothing happened.
i have succeeded in changing the already present node properties and reflect them in tree.
for that i used tree.setCellRenderer(new DefaultTreeCellRenderer());
first i set it to null and then later i assigned new CellRenderer. it worked properly. but for adding new node in parent is not happening.
In debugging its showing that new child is there in parent but jtree node reflecting that change.
You need to call reload/nodeStructureChanged on the parent node you've added/removed children to, not the child node.
Note this is not needed if you used DefaultTreeModel#insertNodeInto or #removeNodeFromParent which already fire the correct events.