Bonjour tout le monde.

Comme je bloque sur un sujet graphique, je viens posé mes questions ici.

J'ai construit une classe qui est censé (elle ne sait pas faire encore) affiché le contenu d'un répertoire (récursif) et hélas les exemples données sont pas vraiment juste et en adéquation avec mon code. J'ai donc énormément de mal à faire en sorte que ma classe affiche correctement dans un JTree le contenu d'un répertoire au delà du premier niveau sur retours de sélection.

Mettons que j'ai une arborescence ressemblant à ceci
Parent : Test
Enfant : Parent : Essais
Enfant : Enfant : Parent : Récursivité
Enfant : Enfant : Enfant : Fichier : Texte des essais.txt
Enfant : Parent : Fonctions
Enfant : Enfant : Fichier : Map.properties
Enfant : Enfant : Fichier : image1.png
Enfant : Enfant : Fichier : Infos.txt
Maintenant voila ce que mon code me retourne uniquement
Parent : Test
Enfant : Parent : Essais
Enfant : Parent : Fonctions
Comme on aperçois, bien que ça soit des parents, ils apparaissent comme des enfants (premier problème à réglé). Ensuite comme on peut se l'imaginé, il manque les enfants du second niveau et on ne sait pas s'il y a un troisième niveau. Moralité on ne voie rien et ma classe fonctionne pas tout à fait comme prévus.

Un jTree est fait, en théorie, pour afficher ce genre de cas, et bien ça ne le fait pas !

J'imagine que déjà vous avez envie de voir ce que j'ai codé et bien que je n'arrive pas à mes fins, je vais vous le mettre ici. Je strap la partie main pour le moment car ce n'est pas ici que se trouve l'ennui mais bel est bien dans ma classe qui gère le JTree.
La voici donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
 
package appliClasses;
 
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.JScrollPane;
 
import java.io.File;
import java.io.IOException;
 
/**
 * Cette classe a été prévue pour gérer les objets jTree().
 * @author Geeks
 * @version 1.0.0
 */
public class MyTree {
 
    /**
     * Les champs de la classe
     */
    private JTree myTree = new JTree();
    private DefaultMutableTreeNode parentNode;
    private DefaultTreeModel dTreeModel = null;
 
    /**
     * Méthode : créer un JScollPane()
     */
    public MyTree(JScrollPane parentScrollPane) {
 
        //Affiche un JTree()
        myTree.setShowsRootHandles(true);
 
        //Affiche dans le JScrollPane() le JScrollPane
        parentScrollPane.setViewportView(myTree);
    }
 
    /**
     * Ajout d'un noeud racine
     * @param rootname
     * @return
     */
    private void addRootNode(String rootName) {
 
        //Crée un noeud parent
        parentNode = new DefaultMutableTreeNode(rootName);
 
        //Crée un modèle contenant le noeud parent
        dTreeModel = new DefaultTreeModel(parentNode);
 
        //Crée le noeud
        myTree.setModel(dTreeModel);
    }
 
    /**
     * Ajouter un noeud
     * @param nameNode
     * @param parentNode
     * @return
     */
    private DefaultMutableTreeNode addNode(String nameNode, DefaultMutableTreeNode parentNode) {
 
        //Crée une instance de DefaultMutableTreeNode()
        DefaultMutableTreeNode node = new DefaultMutableTreeNode(nameNode);
 
        //Si parentNode est null
        if(parentNode == null) {
 
            //Crée un noeud
            ((DefaultMutableTreeNode)dTreeModel.getRoot()).add(node);
        }
        else {
 
            //Sinon crée un noeud parent
            parentNode.add(node);
        }
 
        //Retourne le noeud
        return node;
    }
 
    /**
     * Afficher un noeud parent particulier
     * @param nameDonne
     */
    public void affNameTree(String nameDonne) {
 
        //Si nameDonne n'est pas null
        if(nameDonne != null) {
 
            //Ajoute un noeud parent
            addRootNode(nameDonne);
        }
        else {
 
            //Ajoute un noeud nommé erreur
            addRootNode("Erreur");
        }
    }
 
    /**
     * Afficher le contenu d'un répertoire dans un JTree
     * @param fileSelected
     */
    public void affFileTree(File fileSelected) {
 
        //Si fileSelected n'est pas null
        if(fileSelected != null) {
            try {
 
                //Ajoute un noeud parent
                addRootNode(fileSelected.getCanonicalPath());
 
                //Tant qu'il reste des fichier ou dossier à afficher
                for(int i = 0; i < fileSelected.listFiles().length; i++) {
 
                    //Ajoute un noeud
                    addNode(fileSelected.listFiles()[i].getName(), null);
                }
            }
            catch (IOException e) {
 
                //En cas d'erreur, affiche le message.
                System.out.println(e.getMessage());
            }
        }
        else {
            //Sinon affiche comme parent
            addRootNode("Rpg");
        }
 
        myTree.expandRow(0);
    }
}
Pour utiliser mon affichage, je passe par cette appel ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        /*
         * Bouton du menu Fichier -> Créer -> Dossier Rpg
         */
 
 
        //Crée une instance MyTree()
        MyTree monArbre = new MyTree(this.jScrollPane1);
 
        //Créer une instance MyFileChooset()
        MyFileChooser monChoix = new MyFileChooser();
 
        //Crée un arbre à partir de la selection retourné
        monArbre.affFileTree(monChoix.getActionJFileChooser());
    }
Là encore pas de quoi fouetté un chat. Et pourtant ça bloque depuis 3 jours sur ça

Existe-il une possibilité de faire une nouvelle fonction qui affiche au delà d'un niveau. Car je vais gardé le niveau à un seul niveau pour plus tard (je risque d'en avoir besoin).

Merci pour vos précisions et votre aide.