Allez je suis sympa, je te file une partie mais ce code n'est pas complet (il ne permet pas l'affichage) et si tu possède une trop grande arborescence, il te fera une une execption du type java.lang.OutofMemory.
Ce qu'il faudrait faire c'est la contruire au fur et à mesure en mettant des ecouteurs sur chaque noeud.
Mais bon à toi de te débrouiller:
public JTree arborescenceDossier(){ racine= new DefaultMutableTreeNode(new NoeudTitreDossier(dirRacine.getName(),dirRacine.getAbsolutePath()),true); File[] roots = dirRacine.listFiles(); for (int i = 0 ; i<roots.length ; i++) { if(roots[i].isDirectory()){ racine.add(getSubDirs(roots[i])); } }
arbre=new JTree(racine); arbre.addMouseListener(new EcouteurSourisArborescence(this)); arbre.setCellRenderer(rc); arbre.setCellEditor(ec); return arbre; } /** * Méthode récursive permettant de récupérer * tous les fichiers et sous dossiers d un autre * @param root un File qui représente le lecteur ou le repertoire de départ * @return DefaultMutableTreeNode */ private DefaultMutableTreeNode getSubDirs(File root){ //on créé un noeud DefaultMutableTreeNode noeud= new DefaultMutableTreeNode(new NoeudTitreDossier(root.getName(),root.getAbsolutePath()),true);
//on recupère la liste des fichiers et sous rep File[] list = root.listFiles(); if ( list != null){ //pour chaque sous rep on appel cette methode => recursivité for (int j = 0 ; j<list.length ; j++){ if (list[j].isDirectory()){ noeud.add(getSubDirs(list[j])); } } } return noeud; }
|
Frouf