2009-03-16 9 views
0

Pourquoi ai-je un NullPointerException quand je tente de l'exécuter sur une étiquette:exception de pointeur nul JLabel

JLabel player1CurrentScore = new JLabel("" + matchPlay.returnPL1GamesWon(), 
             JLabel.CENTER); 

Est-ce parce que je ne peux pas avoir deux chaînes concaténées comme ça?

Idéalement, j'essaie de définir l'étiquette comme le score du lecteur afin qu'il puisse être incrémenté correctement au fur et à mesure des besoins.

Voici mon exception stackdump:

java.lang.NullPointerException 
at GUI.makeFrame(GUI.java:71) 
at GUI.<init>(GUI.java:28) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at bluej.runtime.ExecServer$3.run(ExecServer.java:808) 
+0

En plus: Si MATCHES. returnPL1GamesWon() est numérique, la meilleure façon de le faire dans les JVM récentes est String.valueOf (matchPlay.returnPL1GamesWon()) et d'éviter "" + de "chaîner" un nombre. Comme d'autres l'ont dit, l'exception NullPointerException DOIT provenir de matchPlay étant null. – Eddie

Répondre

3

Il n'y a rien qui provoque une exception de pointeur nul, sauf si MatchPlay est nulle ou matchPlay.returnPL1GamesWon() renvoie une exception de pointeur nul lui-même. Mise à jour: Basé sur le fait que l'exception provient de GUI.makeFrame, je dois vous demander si vous avez réellement un affichage graphique? S'agit-il d'une application de ligne de commande, d'une application Swing ou d'une applet? Il semble que vous essayez de créer un JLabel sans contexte graphique. D'après les informations contenues dans la question: la référence matchPlay est nulle.

+0

Je pense que si matchPlay.returnPL1GamesWon() renvoie null, il affichera simplement 'null', ne pas lancer une exception NullPointerException? – Brabster

+0

Oui, ce que Brabster a dit. Cependant, il est possible que matchPlay.returnPL1GamesWon() lance lui-même une exception NullPointerException. – Eddie

+0

@Brabster, @Eddie, vous avez raison. Correction du libellé –

3

Mise à jour: Étant donné que matchPlay ne peut pas être nul, la méthode appelée sur matchPlay doit lancer l'exception. Vérifiez la trace de la pile pour l'appel de la méthode précédente, devrait aider à localiser le problème.

+0

il ne peut pas être Tho becuase quelques-unes des autres méthodes de MatchPlay travaillent, j'ai le jeu privé suivant MatchPlay MatchPlay = nouveau jeu() comment peut-il être nul? –

+0

Ah. Tu n'as pas dit ça. Dans ce cas, voir la réponse @Paul Tomblin ci-dessous. – Brabster

0

j'ai réussi à répondre,

ce fut l'ordre dont je me assigne des champs dans le constructeur

désolé pour la peine

Merci à tous

+0

Heureux que vous l'ayez compris! – Ascalonian