Si in effetti avevi ragione sul model.
non aveva senso.
cmq inizialmente il jtree è vuoto.
viene riempito solo quando viene selezionata una directory con il JFileChooser.
quindi diciamo che non c'è neanche il "pericolo" che venga selezionato un file.
quindi sull'evento ho messo questo:
FileChooserOpen fco = new FileChooserOpen();
fco.showOpenDialog(null);
File dir = fco.getDir();
DefaultMutableTreeNode root = scanDir(dir);
DefaultTreeModel model = new DefaultTreeModel(root);
tree.setModel(model);
e poi ho modificato il metodo scanDir come da tuo esempio:
private DefaultMutableTreeNode scanDir(File file) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file);
if (file.isDirectory()) {
File[] files = file.listFiles();
Arrays.sort(files, new MyComparator());
for (File f : files) {
DefaultMutableTreeNode childNode = scanDir(f);
node.add(childNode);
}
}
return node;
}
i nodi si riempiono correttamente.
però continua a non essere ordinato.
nel senso che viene ordinato alfabeticamente, me senza mettere prima le directory e poi file.
ti riposto il comparator, dovesse essere sbagliato la:
public class MyComparator implements Comparator<File> {
@Override
public int compare(File f1, File f2) {
if (f1.isFile() && f2.isDirectory()) {
return 1;
} else if (f1.isDirectory() && f2.isFile()) {
return -1;
} else {
return f1.getName().compareTo(f2.getName());
}
}
}