簡體   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