代码之家  ›  专栏  ›  技术社区  ›  java.is.for.desktop

JavaSwing:如何定义JTHEL如何显示“用户对象”?

  •  4
  • java.is.for.desktop  · 技术社区  · 16 年前

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

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

    注意:我的用户对象 有 与…不同 String 能够维护树和用户对象之间的映射。

    3 回复  |  直到 13 年前
        1
  •  6
  •   Jack    16 年前

    我不明白你有什么问题。

    这个 DefaultMutableTreeNode 将使用 toString 方法,因为它是有意义的。这个 JTree 需要字符串来绘制对象,因此向对象询问其字符串rapresentation是正常的。

    如果你真的需要避免打电话 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();
      }
    }
    

    但我真的不明白这样做的意义……此外,您可以尝试扩展 默认可变TreeNode 通过覆盖 ToString公司 方法,但需要对对象或某些 向下投射 将需要。

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

        2
  •  5
  •   basszero    16 年前

    在用户对象上重写ToString()或提供 TreeCellRenderer , basic example

        3
  •  0
  •   lreeder    13 年前

    如果您只关心为用户对象显示的文本,而不想麻烦TreeCellRender,那么另一种选择是:扩展jtree并重写 convertValueToText 使用自己的代码为该对象创建描述性字符串。