Quiero crear una GUI que muestre el árbol de directorios, y los subdirectorios de estos según se vaya desplegando.
En lugar de crear todo el árbol de golpe (demasiado costoso), lo que quiero es que al darle a desplegar "C:/" por ej., en ese momento se creen los nodos pertinentes y se muestren.
Lo he intentado hacer pero como el nodo raíz (C:/) al inicio está vacío, el método que tengo para caputar el TreeExpansionEvent no hace nada (aparte de que no estoy seguro de que funcione bien). ¿Qué puedo hacer?
Muchas gracias.
PD.adjunto el código:
Código:
public class DirectoryTree implements TreeExpansionListener{
/* Atributos necesarios: */
DefaultMutableTreeNode root;
DefaultTreeModel model;
JTree dirTree;
/* COnstructor: */
public DirectoryTree(){
root=new DefaultMutableTreeNode("C:/");
model=new DefaultTreeModel(root);
dirTree=new JTree(model);
}
/* Devuelve el JTree para poder pasarselo a JScrollPane */
public JTree getTree(){
return this.dirTree;
}
@Override
public void treeExpanded(TreeExpansionEvent event) {
TreePath tp=event.getPath();
Object aux2[]=tp.getPath();
String aux="";
for(int i=0;i<aux2.length;i++){
aux=aux+"/"+((DefaultMutableTreeNode)aux2[i]).toString();
}
addFolders(aux,this.model,this.root);
}
private static void addFolders(String path,DefaultTreeModel m,DefaultMutableTreeNode root){
File fil=new File(path);
if(fil!=null){
String aux[]=fil.list();
for(int i=0;i<aux.length;i++){
m.insertNodeInto(new DefaultMutableTreeNode(aux[i]), root, i);
}
}
}
public static void main(String args[]){
JFrame frame=new JFrame();
DirectoryTree dt=new DirectoryTree();
JScrollPane jsc=new JScrollPane(dt.getTree());
frame.getContentPane().add(jsc);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}