当使用 JTree, ,一个"用户对象"的一个 DefaultMutableTreeNode 可以设置。这可以是任何一种,但它显示,它的 toString() 值是使用。这不是我需要什么。

我如何可以改变的方式用户的目的是显示?

注:我的用户对象 要不同的东西比一个 String 能够维持映射之间的树和用户的对象。

有帮助吗?

解决方案

我没有得到什么是你的问题。

,因为它是有意义的DefaultMutableTreeNode将使用用户对象上的toString方法。该JTree需要串来绘制对象,因此,要求到对象的字符串rapresentation是确定的。

如果你真的需要避免调用你的对象toString你将需要一种方式来提供反正它的串rapresentation,但是你必须写自己的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();
  }
}

不过,我实在看不出这样的点。另外,你可以尝试通过重写DefaultMutableTreeNode方法延长toString,但你需要一个额外的参考对象或部分的向下转换的是必要的。

如果你真的需要一个不同的可视化不是字符串,你将不得不编写自己的渲染实现TableCellRenderer

其他提示

复盖toString()用户对象,或者提供一个 TreeCellRenderer, 基本的例子

另一个选择,如果你只关心文字所示用户对象并不想打扰TreeCellRender:延长jtree就和复盖 convertValueToText 用你自己的代码,创造一种描述性的串为对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top