2016-07-14 32 views
0

Ich habe versucht, eine Möglichkeit zum Durchsuchen von Dateien zu meinem Programm hinzuzufügen. Ich wollte Code von hier verwenden: 1 (Gilberts Antwort), aber das war mir wichtig, JTree in bestimmter Position und Größe zu haben. Leider reagiert der JTree nicht, wenn ich darauf klicke.Kann JTree ohne LayoutManager nicht verwenden

Hier ist der Code:

public class Frame extends JFrame implements Runnable { 

private DefaultMutableTreeNode root; 

private DefaultTreeModel treeModel; 

private JTree tree; 
public File fileRoot; 

public Frame(){ 
    super("FileBrowser"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

    setSize(480, 320); 
    setLocation(50,50); 
    getContentPane().setLayout(null); 

    fileRoot = new File("C:/"); 
    root = new DefaultMutableTreeNode(new FileNode(fileRoot)); 
    treeModel = new DefaultTreeModel(root); 

    tree = new JTree(treeModel); 

    tree.setBounds(10, 39, 155, 177); 
    getContentPane().add(tree); 
    tree.setShowsRootHandles(true); 

} 


@Override 
public void run() { 
    CreateChildNodes ccn = new CreateChildNodes(fileRoot, root); 
    new Thread(ccn).start(); 
} 

} 

Hauptklasse:

public class main { 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Frame()); 
    } 
} 

Als ich

getContentPane().setLayout(null); 

und lassen JTree füllen ganze Rahmen kommentieren, es funktioniert, wie es sollte

Antwort

1

Versuchen Sie zu ändern die folgenden Zeilen:

tree.setBounds(10, 39, 155, 177); 
getContentPane().add(tree); 

zu

JScrollPane scroller = new JScrollPane(tree); 
scroller.setBounds(10, 39, 155, 177); 
getContentPane().add(scroller); 

Wenn mein Vorschlag keine Wirkung hat, versuchen Sie eine SSCCE zu schaffen, so kann ich sehen, was los ist.

P.S. Versuchen Sie Layoutmanager zu lernen. Sie sind sehr nützlich.

+0

Danke, es funktioniert! Ich weiß, dass es generell viel besser ist, Layout-Manager zu verwenden, aber in meinem Fall möchte ich mein Programm auf einem bestimmten Bildschirm anzeigen, und das Layout ist nicht das Schlüsselmerkmal, also wählte ich den einfacheren Weg. – Ch0mik18

+1

Um auf die Sache in dieser Antwort zu erweitern ** die meisten ** lohnt sich zu beachten: Java GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgröße, Bildschirmauflösung usw. mit verschiedenen PLAFs in verschiedenen Ländern arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). –

+0

@ Ch0mik18 in diesem Fall wäre es schön, wenn Sie meine Antwort als richtig akzeptieren. –