JavaSwing:如何定义JTree如何显示;用户对象";?

JavaSwing:如何定义JTree如何显示;用户对象";?,java,swing,jtree,treemodel,user-object,Java,Swing,Jtree,Treemodel,User Object,使用JTree时,可以设置DefaultMutableTreeNode的“用户对象”。这可以是任何类型,但要显示它,需要使用它的toString()值。这不是我需要的 如何更改用户对象的显示方式? 注意:我的用户对象必须与字符串不同,才能维护树和用户对象之间的映射。覆盖用户对象上的toString(),或提供一个,我不明白您的问题所在 DefaultMutableTreeNode将在用户对象上使用toString方法,因为它有意义。JTree需要字符串来绘制对象,因此向对象请求字符串表示是可以的

使用
JTree
时,可以设置
DefaultMutableTreeNode
的“用户对象”。这可以是任何类型,但要显示它,需要使用它的
toString()
值。这不是我需要的

如何更改用户对象的显示方式?


注意:我的用户对象必须与
字符串不同,才能维护树和用户对象之间的映射。

覆盖用户对象上的toString(),或提供一个,

我不明白您的问题所在

DefaultMutableTreeNode
将在用户对象上使用
toString
方法,因为它有意义。
JTree
需要字符串来绘制对象,因此向对象请求字符串表示是可以的

如果您确实需要避免在对象上调用
toString
,那么您仍然需要一种方法来提供它的字符串表示,但您必须编写自己的
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();
  }
}
但我真的不明白这样做的意义。。此外,您可以尝试通过重写
toString
方法来扩展
DefaultMutableTreeNode
,但是您需要对对象进行额外的引用,或者需要进行一些向下转换


如果确实需要与字符串不同的可视化效果,则必须编写自己的呈现,实现
TableCellRenderer

如果您只关心为用户对象显示的文本,而不想麻烦使用TreeCellRender,则另一种选择是:扩展JTree并使用创建该对象的描述性字符串。

我会尽量精简渲染器。这正是我的问题:我不知道在这种情况下重写
DefaultMutableTree
toString()
与重写用户对象的
toString()
是一样的(顺便说一句,这是最终的,来自一个外部API,所以我不能这么做)。如果我有一个包含活动对象的JTree,其中一个活动有一个标题和一个时间字段,我可能会在一个表中使用这个对象,在这个表中,我在单独的列中显示标题和时间,并在一个JTree中使用它,在这个JTree中,我想显示标题-时间。但是如果我只有toString()方法重写我不能同时满足。。。