aspose file tools*
The moose likes Swing / AWT / SWT and the fly likes JTree Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "JTree" Watch "JTree" New topic
Author

JTree

Alan Brooks
Greenhorn

Joined: Nov 30, 2008
Posts: 14
Hello,

I have been making a dynamic JTree but when i delet a node it disapears from the tree but when i click to expand the new tree the node that has been removed reapers. Can anyone help me so that when i remove the node it does not come back when i try expand the tree.



I am using


Andre Uhres
Greenhorn

Joined: Nov 23, 2008
Posts: 23
Each time, before calling populateTree(), we should initialize again "rootNode" and "treeModel" and set the "treeModel" to the tree:
Alan Brooks
Greenhorn

Joined: Nov 30, 2008
Posts: 14
This is being done already and does not help
Andre Uhres
Greenhorn

Joined: Nov 23, 2008
Posts: 23
Alan Brooks wrote:This is being done already and does not help

Could you please post a short independant and compilable example?
Alan Brooks
Greenhorn

Joined: Nov 30, 2008
Posts: 14
Hey managed to get the JTree to update I was not redrawing it the correct way. I have one last question. If you use a treeModel is there anyway to rename the node after it has been inserted.
Gregg Bolinger
GenRocket Founder
Ranch Hand

Joined: Jul 11, 2001
Posts: 15299
    
    6

Alan Brooks wrote:Hey managed to get the JTree to update I was not redrawing it the correct way. I have one last question. If you use a treeModel is there anyway to rename the node after it has been inserted.


I noticed you are passing the name of the User object to the constructor of DefaultMutableTreeNode. This works, however, for renaming and IMO best practice dictates that you specify a custom User Object in the constructor of your node. The node will then use the toString method of your object for the node label.

subFolder = new DefaultMutableTreeNode(getUser(a));

And then assuming User's toString returns getName(), you're good. Anytime you want access to this object you can simple do:

User user = (User)node.getUserObject();

Then changing the name of 'user' will change the name of the nodes label.


GenRocket - Experts at Building Test Data
Andre Uhres
Greenhorn

Joined: Nov 23, 2008
Posts: 23
Gregg Bolinger wrote:Then changing the name of 'user' will change the name of the nodes label.

To refresh the GUI we also need to call nodeChanged:
defaultTreeModel.nodeChanged(node);
Alan Brooks
Greenhorn

Joined: Nov 30, 2008
Posts: 14



I know this is still not IMO best practice but is doing this the values in the Jtree do not chnage, do you know were i am going wrong
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JTree