2013-04-14 4 views
1

Je reçois Exception dans le thread "AWT-EventQueue-0" java.lang.NullPointerException à this.commaPos = Name.indexOf ("") ligne de mon projet.Le concept est que j'ai 5 JButtons de navires, et quand vous cliquez, vous placez le navire sur un plateau pour un jeu de cuirassé.Pas de temps maintenant je suis coincé à cela. ? Merci"AWT-EventQueue-0" java.lang.NullPointerException » Erreur lors de l'exécution ChangeListener

EDIT:.!.. J'ai changé le nom du nom corde à nname maintenant j'obtenir la même erreur à la ligne suivante this.commaPos = nname.indexOf ("");

public void stateChanged(ChangeEvent event) 
    { 

    JButton currentButton = (JButton)event.getSource(); 
     System.out.println("STATE CHANGED"); 
    String nname = currentButton.getName(); 
    this.commaPos = nname.indexOf(","); 
    int x = Integer.parseInt(nname.substring(0, commaPos)); 
    int y = Integer.parseInt(nname.substring(commaPos + 1)); 

    checkDeletable(x, y); 

    if (currentButton.getName().equals("")) 
     return; 
    if (this.shipSelected == null) { 
     return; 
    } 
    this.shipSelected.setPos(x, y); 

    clearOldCoords(); 
    boolean valid = getShipCoords(); 
    paintShip(valid); 

    if ((currentButton.isFocusOwner()) && (valid)) 
     placeShip(); 
    } 

Ici, j'utiliser l'écouteur de changement:

{ 
for (int y = 0; y < 10; y++) { 
     for (int x = 0; x < 10; x ++) { 
      this.myBoard[x][y] = new JButton(); 
      this.myBoard[x][y].setMargin(margins); 
      this.myBoard[x][y].setToolTipText(x + "," + y); 
      this.myBoard[x][y].setName(null); 
      this.myBoard[x][y].setIcon(this.sea); 
      this.myBoard[x][y].addChangeListener(this); 
      this.myBoard[x][y].addMouseListener(this); 

      myBoard.add(this.myBoard[x][y]); 

     } 
    } 
} 
+0

Pour une meilleure aide plus rapidement, postez un [SSCCE] (http://sscce.org/). –

+0

Trouvé les gars, j'ai oublié de mettre le nom correct à la boucle for ici: this.myBoard [x] [y] .setName (null); – Manos

Répondre

4

Nom (mauvais nom pour une variable puisque tous les noms de variables doivent commencer par une lettre minuscule) est nul et sans doute il est parce que vous avez jamais réglez. Pourquoi s'inquiéter du nom d'un JButton? Pourquoi ne pas vérifier l'actionCommand à la place?

Il semble un peu inhabituel que vous soyez JButton déclenche un ChangeListener et pas un ActionListener. Pouvez-vous nous donner plus d'informations sur ce que ce morceau de code est censé faire?

+0

Peut-être que l'OP signifiait 'getText' au lieu de' getName'? – MadProgrammer

+0

Essayé les deux et aucun ne fonctionne .... – Manos

+0

D'autres idées? @hovercraft ... Ce code traîne un vaisseau depuis un JButton, et le place sur un plateau pour un projet de jeu BATTLESHIP – Manos

Questions connexes