Frage

Wenn Sie eine JTree verwenden, ein „Benutzerobjekt“ ein DefaultMutableTreeNode eingestellt werden. Dies kann von jeder Art sein, aber es, sein toString() Wert verwendet wird, angezeigt werden soll. Dies ist nicht das, was ich brauche.

Wie kann ich die Art und Weise ändern, ein Benutzerobjekt angezeigt wird?

. HINWEIS: Mein Benutzerobjekt hat , etwas anderes zu sein als ein String der Lage sein, den Baum zu halten Zuordnung zwischen und die Benutzerobjekte

War es hilfreich?

Lösung

ich nicht bekommen, was ist dein Problem.

Die DefaultMutableTreeNode die toString Methode für das Benutzerobjekt verwenden, weil es Sinn macht. Die JTree Bedürfnisse Strings Objekte zu ziehen, so bitten um Ihr Objekt seine String rapresentation in Ordnung ist.

Wenn Sie wirklich toString auf Ihrem Objekt vermeiden müssen, rufen Sie brauchen eine Möglichkeit, einen String rapresentation es ohnehin zu schaffen, aber Sie müssen Ihre eigenen MutableTreeNode schreiben:

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();
  }
}

Aber ich wirklich sehe nicht den Punkt, dies zu tun .. zusätzlich können Sie versuchen, die DefaultMutableTreeNode erstreckt durch zwingende toString Methode, aber Sie werden einen zusätzlichen Verweis auf das Objekt oder ein downcasts müssen benötigt werden.

Wenn Sie wirklich eine andere Visualisierung als eine Zeichenfolge benötigen Sie schreiben, müssen Sie Ihre eigenen gemacht, dass Geräte TableCellRenderer.

Andere Tipps

Überschreiben toString () auf Ihrem Benutzerobjekt oder geben Sie einen TreeCellRenderer , einfaches Beispiel

Eine weitere Alternative, wenn Sie nur über den für das Benutzerobjekt gezeigt Text Pflege und wollen nicht mit TreeCellRender stören: verlängern JTree und Überschreibung convertValueToText mit Ihrem eigener Code, der eine beschreibende Zeichenfolge für das Objekt erstellt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top