Problème utilisation jtree

Résolu
Fredoxmm Messages postés 8 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 24 novembre 2010 - 24 juil. 2008 à 10:20
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 24 juil. 2008 à 16:26
bonjour,

je réalise pour une appli, une petite gestion d'explorateur de fichier. L'utilsiateur choisi grace à un chooser un dossier, et cela est censé afficher le contenu (fichiers et sous dossiers) dans un jtree.

Pour cela j'ai ce code:

public void generateFichier(String rootCombo){

    File dossier;
    String [] listefichiers;
    File[] buffer;
    
    int i = 0;
    int j=0;
    
    DefaultMutableTreeNode noeudPrinci = new DefaultMutableTreeNode("rootCombo",true);
    dossier = new File(rootCombo);
    buffer = dossier.listFiles();
    
    listefichiers = dossier.list();
    
    for(j=1;j<dossier.length(); j++){
        DefaultMutableTreeNode noeud = getDirs(buffer[i]);
        noeudPrinci.add(noeud);
        }
}

Méthode appelée après validation du choix de dossier.

Et voici la méthode getDirs:

public DefaultMutableTreeNode getDirs(File root){
    
    int i = 0;
    
    DefaultMutableTreeNode repertoire = new DefaultMutableTreeNode(root,true);  
    
    File[] liste = root.listFiles();    //récupération des fichiers et sous rep de root
    
    if(liste!=null){
        
        for(i = 1; i<liste.length; i++){
            
            DefaultMutableTreeNode buffer = null;    //Création d'un noeud pour y stocker un nom de répertoire
            
            if(liste[i].isDirectory()){                 //Test si l'élement contenu dans liste est un répertoire ou un fichier,
                buffer = getDirs(liste[i]);
                repertoire.add(buffer);
                
            }
        }
    }
    
    return repertoire;
}

Le problème que je rencontre actuellement est que je ne sais pas comment attribuer mon noeud "noeudPrinci" de ma méthode "generate" à mon jTree.

Pourquoi? car j'ai fait mon interface avec visual editor d'eclipse, et donc par conséquent une méthode existe déja pour instanciée le composant jTree. Donc je ne peux pas le ré instancier une seconde fois, alors existe il un "jtree.add(noeud)" ou quelque chose comme ca?

merci par avance

1 réponse

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
24 juil. 2008 à 16:26
Tu peus essayer ceci:

public void generateFichier(final String rootCombo){
    MutableTreeNode noeudPrinci = new DefaultMutableTreeNode("rootCombo", true);
    DefaultTreeModel model = new DefaultTreeModel(noeudPrinci);
    tree.setModel(model);
    File[] buffer = new File(rootCombo).listFiles();
    for (int j = 0; j < buffer.length; j++) {
        model.insertNodeInto(getDirs(buffer[j]), noeudPrinci, noeudPrinci.getChildCount());
    }
}
public DefaultMutableTreeNode getDirs(final File root) {
    int i = 0;
    DefaultMutableTreeNode repertoire = new DefaultMutableTreeNode(root, true);
    File[] liste = root.listFiles();    //récupération des fichiers et sous rep de root
    if (liste != null) {
        for (i = 0; i < liste.length; i++) {
            DefaultMutableTreeNode buffer = null;    //Création d'un noeud pour y stocker un nom de répertoire
            if (liste[i].isDirectory()) {                 //Test si l'élement contenu dans liste est un répertoire ou un fichier,
                buffer = getDirs(liste[i]);
                repertoire.add(buffer);
            }
        }
    }
    return repertoire;
}
3
Rejoignez-nous