I don't get what's your problem.
The DefaultMutableTreeNode
will use the toString
method on the user object because it makes sense. The JTree
needs strings to draw objects so asking to your object its string rapresentation is ok.
If you really need to avoid calling toString
on your object you will need a way to provide a string rapresentation of it anyway, but you will have to write your own MutableTreeNode
:
class MyTreeNode implements MutableTreeNode
{
UserObject yourObject;
MyTreeNode(UserObject yourObject)
{
this.yourObject = yourObject;
}
// implement all needed methods to handle children and so on
public String toString()
{
// then you can avoid using toString
return yourObject.sringRapresentation();
}
}
But I really don't see the point of doing this.. in addition you can try extending the DefaultMutableTreeNode
by overriding toString
method, but you will need an additional reference to your object or some downcasts will be needed.
If you really need a different visualization than a string you will have to write your own rendered that implements TableCellRenderer
.