繁体   English   中英

Java Swing:如何定义JTree如何显示“用户对象”?

[英]Java Swing: how do I define how a JTree displays the “user object”?

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

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

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

我不明白你的问题是什么。

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

覆盖用户对象上的toString()或提供TreeCellRenderer基本示例

如果您只关心为用户对象显示的文本并且不想使用TreeCellRender,则另一种选择:扩展JTree并使用您自己的代码覆盖convertValueToText ,该代码为该对象创建描述性字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM