ChangeListener执行期间出现“AWT-EventQueue-0”java.lang.NullPointerException“错误

时间:2013-04-14 23:26:47

标签: java swing nullpointerexception listener changelistener

我在线程“AWT-EventQueue-0”java.lang.NullPointerException 中获得异常 this.commaPos = Name.indexOf(“”); 我的项目。这个概念是我有5个JButton的船只,当你点击时,你将船放在一个战舰游戏的板上。现在很多时候我都被困在这里。有任何想法吗 ?谢谢。 !

修改: 我将String name的名称更改为String nname。现在我在下一行得到了同样的错误。 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();
  }

这里我使用了更改侦听器:

{
 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]);

        }
    }
}

1 个答案:

答案 0 :(得分:4)

名称(变量的错误名称,因为所有变量名称应以小写字母开头)为空,可能是因为您从未设置过它。为什么还要担心JButton的名字呢?为什么不检查actionCommand呢?

JButton触发ChangeListener而不是ActionListener似乎有点不寻常。你能给我们更多关于这段代码应该做什么的信息吗?