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
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
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). –
@ Ch0mik18 in diesem Fall wäre es schön, wenn Sie meine Antwort als richtig akzeptieren. –