Swing JTree hinzufügen

handoffate

Mitglied
Hallo,

ich habe ein Problem mit einem JTree (oder wahrscheinlicher grundlegender)
Ich habe ein fertiges Fenster mit Swing erstellt. Darauf befindet sich an bestimmter Stelle ein JScrollpane.. nennen wir es "jsp1"
Auf diesem will ich nun im Laufe des Programms immer wieder einen anderen Baum darstellen.
Mein Gedanke:
eine Methode
Java:
setTree(JTree x){
jsp1.removeall();
jsp1.add(x);
jsp1.validate();
}

nur wird mein neuer Baum nicht angezeigt.. was mach ich falsch??
 
jsp1.getViewport().setView(x); müßt's tun. Vielleicht nocht ein "jsp.validate()" hinterher, sollte aber eigentlich nicht nötig sein.
 
Eine JScrollPane ist eine Component, die mehrere andere Components enthält - im wesentlichen: Zwei JScrollBars und einen JViewPort. Wenn man
scrollPane.removeAll();
macht, werden (thoretisch) also auch die ScrollBars entfernt, und es haut ihn komplett raus ... das sollte man nicht machen. Mit
jsp1.getViewport().setView(x);
setzt man die Componente, die gescrollt werden soll, als die Component, die im Viewport angezeigt wird. Schau dir auch nochmal How to Use Scroll Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) und die API-Doku zu den dort beschriebenen Klassen an.
 
Eine JScrollPane ist eine Component, die mehrere andere Components enthält - im wesentlichen: Zwei JScrollBars und einen JViewPort. Wenn man
scrollPane.removeAll();
macht, werden (thoretisch) also auch die ScrollBars entfernt, und es haut ihn komplett raus ... das sollte man nicht machen. Mit
jsp1.getViewport().setView(x);
setzt man die Componente, die gescrollt werden soll, als die Component, die im Viewport angezeigt wird. Schau dir auch nochmal How to Use Scroll Panes (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) und die API-Doku zu den dort beschriebenen Klassen an.

also verstehe ich das richtig: Wenn ich immer die setView-Methode aufrufe brauche ich im Prinzip gar keine add-Methode mehr aufzurufen. Wird damit dann "automatisch" der Tree zum Panel hinzugefügt?
Über getView() bekomm ich dann den Tree und könnte ihn bearbeiten, richtig oder?
 
also verstehe ich das richtig: Wenn ich immer die setView-Methode aufrufe brauche ich im Prinzip gar keine add-Methode mehr aufzurufen. Wird damit dann "automatisch" der Tree zum Panel hinzugefügt?

Man braucht keine add-Methode mehr. Der JTree wird aber keinem Panel hinzugefügt. Der JTree IST danach DIE Component, die im JViewPort der ScrollPane angezeigt wird.

Über getView() bekomm ich dann den Tree und könnte ihn bearbeiten, richtig oder?

Ja, wenn man das zurückgegebene Objekt nach JTree castet.... (und wenn man sicher weiß, dass da IMMER NUR ein JTree drin ist...)
 

Neue Themen


Zurück
Oben