Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings...

Holger_Hessling

Aktives Mitglied
Hallo Forum,

nachdem dies mein erster Beitrag hier wird, habe ich mich mit meiner Frage für das Anfänger Forum entschieden. Evtl. paßt es aber besser in das Forum "AWT, Swing, JavaFX & SWT". Aber egal, ich stelle mich mal kurz vor.

Mein Name entspricht dem Anmeldenamen, also Holger Hessling. Ich bin 46 Jahre jung und Anfänger, was die Java Programmierung angeht. Meine "Hchzeit des Programmierens" liegt eindeutig in der Zeit vor Windows 1.0. Damals schrieb ich Programme mit dbase, in Pascal und C/C++. Mit der Einführung von Windows habe ich den Anschluß verloren. Ich habe mich nie in die Windows Programmierung einfinden können.

Aktuell möchte ich ein Programm schreiben, das ich bis jetzt mit VBA unter Excel geschrieben habe. Dort funktioniert es ganz gut, ist aber eben kein eigenständiges Programm.

Ich bilde mir ein, daß dieses Programm von einigen gebraucht werden könnte, die aber mit Sicherheit nicht alle nur Windows benutzen. So entstand der Gedanke an eine plattformübergreifende Lösung und mithin bin ich bei Java gelandet.

Derzeit mach ich mich mit den Grundlagen von Java vertraut und muß Meter dicke Staublagen von meinen alten Programmierkenntnissen fegen und vieles, vieles neu lernen. Meine Klassen und Instanzen diverser Testprogramme haben schon die richtigen Namen für meine Anwendung. Aber bevor eine zielgerichtete Anwendung entsteht, spiele ich mit den Eigenschaften diverser JButtons, JLabels, Listeners und und und...

Gerade erkunde ich den JTree. Diesen brauche ich, um meine Datenbasis darzustellen. Diese besteht aus mehreren Instanzen einer eigenen Klasse. Und die einzelnen Instanzen füge ich dem JTree zu. Somit habe ich einen Baum voller "Zeiger" zu den Instanzen meiner Daten. Die Namen im Baum heißen dann aber komisch 🙂 Zum Beispiel "MyClass@58e4d91b".

Nun könnte ich den Namen des Nodes ja ändern, aber dann ist ja der Verweis auf meine Datenstruktur weg.

Könnt Ihr mir bitte einen Tipp geben? Kann ich die Verweise behalten und trotzdem sinnige Namen für die Nodes verwenden?

Vielen Dank für Eure Hilfe!

Gruß
Holger
 
Wenn ich mich recht erinnere, wird das Ergebnis von #toString als Name angezeigt, sollte also reichen, das zu überschreiben und was Sinnvolles zurückzugeben 😉
 
Vielen Dank mrBrown für Deine schnelle Antwort. Von dieser Möglichkeit haben ich schon einiges gelesen, aber es nicht wirklich durchblickt. Wenn in der Ansicht durch dieses Vorgehen ein sinnvoller Name für die Nodes steht, wo ist dann der "Zeiger" auf die Instanz meiner Daten?
 
Vielen Dank mrBrown für Deine schnelle Antwort. Von dieser Möglichkeit haben ich schon einiges gelesen, aber es nicht wirklich durchblickt. Wenn in der Ansicht durch dieses Vorgehen ein sinnvoller Name für die Nodes steht, wo ist dann der "Zeiger" auf die Instanz meiner Daten?
Ich versteh die Frage nicht ganz - die wirkliche Referenz auf dein Objekt bekommst du nirgendwo zu sehen, die wird nur intern gespeichert. #toString gibt einfach nur eine Repräsentation deines Objekts als String zurück (was ohne zu überschreiben der Klassenname + HashCode ist (was ohne zu Überschreiben je nach JVM der Speicherort ist))
 
Hallo mrBrown,

durch Deine Anregung habe ich mich nochmal intensiver mit der toString-Geschichte auseinander gesetzt. Und dabei bin ich über folgende Aussage gestoßen "...Das UserObject ist auch der Lieferant für die Knotenbeschriftung: jeder Aufruf von toString wird an das UserObject weitergeleitet..." Zu finden hier: https://dbs.cs.uni-duesseldorf.de/lehre/docs/java/javabuch/html/k100243.html

Dort steht auch folgendes: "...Anwendungsbezogene Informationen werden in einem UserObject gehalten, das direkt an den Konstruktor übergeben werden kann. Mit setUserObject und getUserObject kann auch nach der Konstruktion noch darauf zugegriffen werden..."

Ich glaube, jetzt habe ich es durchblickt 🙂

Danke, Gruß
Holger
 

Neue Themen


Zurück
Oben