Bonjour,
Je rencontre un souci avec m'ont code, voila la parti qui me renvoit une erreur :
if(e.getSource()==fenetre.btn_A){
char lettre = fenetre.btn_A.getText().charAt(0);
//System.out.println("lettre : "+lettre); //test OK
String mot =game.verification(lettre); // erreur
//System.out.println("mot : "+mot); //test
//Teste si le joueur à perdu
if(mot=="PERDU"){
fenetre.masqueBouton();
}else if(mot==game.getMot()){
fenetre.masqueBouton();
fenetre.txtfld_Mot.setText("Félicitation");
}
fenetre.afficheTiret(mot);
fenetre.btn_A.setEnabled(false);
}
j'ai testé la fonction
verification(lettre)
avec la console elle marche très bien, mais des que j'essaiye avec m'ont interface j'ai l'érreur suivante:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Interface.Ecouteur.actionPerformed(Ecouteur.java:197)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Je ne comprend pas pourquoi pouvez vous m'aider.
Merci
C'est game qui est égal à null ici.
Si tu le NullPointerException était à l'intérieur de verification tu aurais une ligne de plus dans la stack, or là elle s'arrête sur la ligne 197...
Les événements peuvent s'exécuter dans n'importe quel ordre.
Si tu appuies sur btn_A l'objet sera initialisé dans l'objet Ecouteur.
Mais si tu appuies sur btn_newGame en premier l'objet vaudra null puisqu'il n'aura pas été initialisé. Cela peut également arriver si btn_newGame ne s'exécute pas avec le même objet Ecouteur que btn_A, dans ce cas tu auras deux objets Ecouteur, le premier initialisé, le second qui a null.
Ce qu'il faudrait expliquer c'est où se situe ton premier code par rapport au deuxième...
// création de l'objet pendue
Pendu game =new Pendu();
C'est faux, car tu déclares une deuxième fois la variable game, et c'est cette variable que tu initialises, pas l'attribut de la classe qui reste donc null.
Ce que tu mettais tout à l'heure c'est mieux :
// création de l'objet pendue
this.game =new Pendu();
30 mars 2015 à 21:54
Voila le code qu'il y a dans mon ecoute:
pourquoi mon objet game ne prend pas la valeur du nouveau pendu ?
Merci pour ton aide
30 mars 2015 à 22:05
Si tu appuies sur btn_A l'objet sera initialisé dans l'objet Ecouteur.
Mais si tu appuies sur btn_newGame en premier l'objet vaudra null puisqu'il n'aura pas été initialisé. Cela peut également arriver si btn_newGame ne s'exécute pas avec le même objet Ecouteur que btn_A, dans ce cas tu auras deux objets Ecouteur, le premier initialisé, le second qui a null.
Ce qu'il faudrait expliquer c'est où se situe ton premier code par rapport au deuxième...
30 mars 2015 à 22:08
30 mars 2015 à 22:14
C'est faux, car tu déclares une deuxième fois la variable game, et c'est cette variable que tu initialises, pas l'attribut de la classe qui reste donc null.
Ce que tu mettais tout à l'heure c'est mieux :
30 mars 2015 à 22:17
je continu a réfléchir pourquoi se ne veut pas fonctionner est comment faire pour que mon objet game soit utilisable par mes autres boutons.