Java Swing: Wie kann ich definieren, wie ein JTree zeigt das „Benutzerobjekt“?
-
24-09-2019 - |
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
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.