JTree in JScrollPane: JScrollPane automatisch anpassen

Guadrion

Mitglied
Hi,
ich habe einen JTree in einem JScrollPane und möchte, dass wenn durch mein Programm ein Knoten des Baumes selektiert wird, das JScrollPane automatisch so scrollt, dass der selektierte Knoten sichtbar ist (bzw. in der vertikalen Mitte).

Wie erreich ich das?
 
Hallo, am besten suchst du dir einen Listener, der darauf reagiert, wenn du einen Knoten in deinem Tree öffnest/schließt. Ich meine mal etwas von TreeWillExpandListener gehört zu haben.

Im entsprechenden Event holst du dir die Referenz des Scrollbalkens, den du verschieben möchtest.
Java:
 JScrollBar getVerticalScrollBar() 
          Returns the vertical scroll bar that controls the viewports vertical view position.
JScrollBar getHorizontalScrollBar() 
          Returns the horizontal scroll bar that controls the viewport's horizontal view position.

Die Methoden der JScrollBar helfen dir dann auf den weiteren Weg.
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JScrollBar.html
 
Hallo,

Schau Dir mal die Funktion scrollPathToVisible an:

Java:
JTree tree = new JTree(/*dein TreeModel*/);
tree.scrollPathToVisible(/*dein TreePath*/);

Aus der Java API:

scrollPathToVisible
public void scrollPathToVisible(TreePath path)
Makes sure all the path components in path are expanded (except for the last path component) and scrolls so that the node identified by the path is displayed. Only works when this JTree is contained in a JScrollPane.

Parameters:
path - the TreePath identifying the node to bring into view

Ob das dann angezeigte Baumblatt wirklich in der Mitte deiner Scrollbar ist wage ich zu bezweifeln. Sicher ist, dass der Knoten ausgeklappt wird und du ihn sicher siehst.

Gruss
mas
 
Zurück