JTree Scrollbar-Probleme

Marshallbbw

Erfahrenes Mitglied
Hallo Leute,

ich habe folgendes Problem. Ich kann ein Tree-Gebilde in ein Frame integireren, und dann diesem Frame eine Scrollbar inzufügen. Ich versuche jetzt aber dem tree-Gebilde selbst diese Scrollbar zuzuweisen. Leider scheiter ich daran. Kann mir jemand sagen ob dass überhaupt geht - irgendwie muss es doch dafür ne Lösung geben. Hier mal ein Beispiel.
Vielen Dank für eure Hilfe!

Code:
import javax.swing.*;
import java.awt.*;
import javax.swing.tree.*;

public class JTreeDemo
{
  public static void main( String args[] )
  {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    frame.setSize(200, 200);
    
    DefaultMutableTreeNode root = new DefaultMutableTreeNode( "Root" );
    
    for ( int ast = 0; ast <  10; ast++ )
    {
      DefaultMutableTreeNode node = new DefaultMutableTreeNode( "Ordner " + ast );
      root.add( node );
      
      for ( int blatt = 1; blatt < 4; blatt++ )
        node.add( new DefaultMutableTreeNode("Blatt " + (ast*3+blatt )) );
    }
    
    JTree tree = new JTree( root );
    JScrollPane scrollTree = new JScrollPane( tree );
    // nicht
    //frame.getContentPane().add( scrollTree );
    
    frame.setLayout(new BorderLayout());
    frame.add(tree, BorderLayout.CENTER);
//funtz nicht
    tree.add(scrollTree);
    
    frame.add(new JLabel("bla"), BorderLayout.WEST);
    frame.add(new JLabel("bli"), BorderLayout.EAST);
    frame.add(new JLabel("blo"), BorderLayout.NORTH);
    frame.add(new JLabel("ble"), BorderLayout.SOUTH);
    

    frame.setVisible( true );
  }
}
 
Hallo,

1. JTree tree = new JTree( root );
2. JScrollPane scrollTree = new JScrollPane( tree );
3. frame.add(tree, BorderLayout.CENTER);
4. tree.add(scrollTree);

hier ist doch was komisch oder?

Du packst in Zeile 2 tree in scrolltree. Dann packst du scrolltree wieder in tree ;) . Die Lösung ist viel einfacher. tree in scrolltree packen und scrolltree in frame packen und anzeigen:


JTree tree = new JTree( root );
JScrollPane scrollTree = new JScrollPane( tree );
frame.add(scrollTree, BorderLayout.CENTER);

Vg Erdal
 
Zurück