Bonsoir,

Je suis arrivé à faire fonctionné mon jTree, enfin !

Ce qui m'embête maintenant c'est quand je fait ceci dns mon main:
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
 
 private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        /*
         * Bouton du menu Fichier -> Créer -> Dossier Rpg
         */
 
        //Crée une inatance de ObjFileChooser
        ObjFileChooser objChooser = new ObjFileChooser();
 
        //Crée l'objet JFileChooser
        objChooser.createJFileChosser();
 
 
        //Créer une instance ObjTree
        ObjTree objTree = new ObjTree();
        objTree.setFileSelected(objChooser.getActionJFileChooser());
        objTree.affFileTree();
    }
J'appelle cette classe pour cherché un chemin. Cette partie est corect car je voie bien dans la classe suivante les valeurs du répertoire s'afficher quand je fais un System.out.println().
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
 
package appliClasses;
 
import java.io.File;
import javax.swing.JFileChooser;
 
 
public class ObjFileChooser {
    /*
     * Méthode : Fonction
     * Action : Créer un jFileChooser
     * Reçois : Rien
     */
    public void createJFileChosser() {
        //Les options
        choix.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        choix.setMultiSelectionEnabled(false);
 
        action = choix.showOpenDialog(null);
    }
 
    /*
     * Méthode : Getter
     * Action : Renvoie le répertoire ou le fichier sélectionné
     * Reçois : Rien
     */
    public File getActionJFileChooser() {
 
        //Si c'est le bouton enregistrer
        if(action == JFileChooser.APPROVE_OPTION) {
            //On retourne le dossier enregistrer
            pathSelect = choix.getSelectedFile();
        }
 
        //Retourne le dossier enregistrer
        return pathSelect;
 
    }
 
    /*
     * Les champs de la classe
     */
 
    private File pathSelect = new File("");
    private JFileChooser choix = new JFileChooser();
    private int action;
}
La ou ça plante c'est dans cette classe en cours de développement:
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
 
package appliClasses;
 
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
 
import java.awt.Dimension;
import java.io.File;
 
 
public class ObjTree {
 
    /*
     * Méthode : Setter
     * Action : Attribuer un nom de noeud
     * Reçois : Un nom d'un noeud
     */
    public void setNameNode(String nameRealNode) {
        this.nameNode = nameRealNode;
    }
 
    /*
     * Méthode : Setter
     * Action : Attribuer un nom de noeudparent
     * Reçois : Le nom d'un noeud parent
     */
    public void setParentNode(DefaultMutableTreeNode ParentNode) {
        this.parentNode = ParentNode;
    }
 
    /*
     * Méthode : Setter
     * Action : Attribuer un File à une variable
     * Reçois : Le File sélectionné
     */
    public void setFileSelected(File fileSelect) {
        this.fileSelected = fileSelect;
    }
 
 
    /*
     * Méthode : Fonction
     * Action : Créer un JTree
     * Reçois : Rien
     */
    public JTree createJTree() {
        //Affiche un JTree() manitulable (Handle)
        myTree.setShowsRootHandles(true);
 
        //Modifie les caractéristiques du JScrollPane
        myScrollPane.setAutoscrolls(true);
        myScrollPane.setPreferredSize(new Dimension(200, 150));
 
        //Affiche dans le JScrollPane le JTree
        myScrollPane.setViewportView(myTree);
 
        //Crée une instance DefaultMutableTreeNode()
        parentNode = new DefaultMutableTreeNode("Rpg");
 
        //Crée une instance modèle DefaultTreeModel()
        treeModel = new DefaultTreeModel(parentNode);
 
        //Affiche le noeud
        myTree.setModel(treeModel);
 
        return myTree;
    }
 
    /*
     * Méthode : Fonction
     * Action : Ajouter un noeud
     * Reçois : Un nom de noeud et le nom d'u noeud parent
     */
     public DefaultMutableTreeNode addNode() {
         //Crée une instance de DefaultMutableTreeNode
         DefaultMutableTreeNode node = new DefaultMutableTreeNode(nameNode);
 
         //Si le parent est null
         if(parentNode == null) {
             //On crée un parent
             ((DefaultMutableTreeNode)treeModel.getRoot()).add(node);
         }
         else {
             //Sinon on crée un enfant dont le parent est node
             parentNode.add(node);
         }
         return node;
     }
 
    /*
     * Méthode : Fonction
     * Action : Afficher le contenu d'un répertoire dans un JTree
     * Reçois : Un File()
     */
     public void affFileTree() {
         //Crée une instance de ObjTree
         ObjTree obj = new ObjTree();
 
         //Tant qu'il reste des fichier ou dossier à afficher
         for(int i = 0; i < fileSelected.list().length; i++) {
 
             //Crée un membre à ajouter
             obj.setNameNode(fileSelected.listFiles()[i].getName());
             obj.setParentNode(null);
             obj.addNode();
         }
 
         myTree.expandRow(0);
     }
 
 
    /*
     * Les champs de la classe
     */
    private JScrollPane myScrollPane = new JScrollPane();
    private JTree myTree = new JTree();
    private DefaultMutableTreeNode parentNode;
    private DefaultTreeModel treeModel = null;
    private File fileSelected;
 
    private String nameNode;
}
Cela me provoque un null pointer exception alors que mes variables sembles correct et que lorsque je teste en manuelle tout s'affiche correctement.

Voici pour information la jolie erreur qui apparaît !
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at appliClasses.ObjTree.addNode(ObjTree.java:89)
at appliClasses.ObjTree.affFileTree(ObjTree.java:113)
at jForm.jMainForm.jMenuItem2ActionPerformed(jMainForm.java:227)
at jForm.jMainForm.access$000(jMainForm.java:30)
at jForm.jMainForm$1.actionPerformed(jMainForm.java:152)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:374)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:829)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:873)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6108)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:5873)
at java.awt.Container.processEvent(Container.java:2105)
at java.awt.Component.dispatchEventImpl(Component.java:4469)
at java.awt.Container.dispatchEventImpl(Container.java:2163)
at java.awt.Component.dispatchEvent(Component.java:4295)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)
at java.awt.Container.dispatchEventImpl(Container.java:2149)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4295)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:604)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Par contre j'aimerais savoir pourquoi. Et corriger ce qui doit l'être !
Merci.