IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

[JTree] Null Pointer Exception


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut [JTree] Null Pointer Exception
    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.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Bonjour,

    treeModel est à null, je suppose, puisque dans ton code tu ne définis pas sa valeur.

  3. #3
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Dans l'exemple que j'avais et qui fonctionnais, il n'était pas plus définit !

    Donc s'il faut le définir, comment je puis m'y prendre ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je sais pas ce que tu compte lui mettre, mais en tout cas tu peux pas appeler des méthodes sur un objet null. D'instinct je remplacerais par ça, mais comme je n'ai pas tout compris ton code, je suis pas sûr que c'est le résultat que tu veux obtenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public DefaultMutableTreeNode addNode() {
             //Crée une instance de DefaultMutableTreeNode
             DefaultMutableTreeNode node = new DefaultMutableTreeNode(nameNode);
     
             //Si le parent est null
             if(parentNode == null) {
                 return node;
             }
             else {
                 //Sinon on crée un enfant dont le parent est node
                 parentNode.add(node);
             }
             return node;
         }

  5. #5
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Effectivement ça ne plante plus si je met un return node;

    Mais alors maintenant je n'ai pas l'arborescence.

    Existe-il un autre moyen dand cette classe de réalisé un affichage depuis un File() ?

  6. #6
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Désolé du double post mais en fait j'ai carrément changer le code de ma classe

    Je ferme ce post en délestage et je reviendrais avec un autre post sur les autres soucis que j'aurais à gérer

Discussions similaires

  1. Tomcat 5.5 Null Pointer Exception
    Par nono44200 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 07/04/2007, 10h00
  2. Null pointer Exception pour ma Fenetre
    Par LeXo dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/01/2007, 09h17
  3. Null Pointer Exception
    Par gloglo dans le forum Langage
    Réponses: 4
    Dernier message: 20/12/2006, 11h32
  4. [Struts] Null Pointer Exception
    Par n@n¤u dans le forum Struts 1
    Réponses: 1
    Dernier message: 01/08/2006, 13h10
  5. Null Pointer Exception
    Par snouppy dans le forum JBuilder
    Réponses: 3
    Dernier message: 13/06/2006, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo