1

this.commaPos = Name.indexOf(" ");でスレッド "AWT-EventQueue-0" java.lang.NullPointerExceptionで 例外が発生しています。私のプロジェクトのライン。コンセプトは、船の JButton が 5 つあり、クリックすると、戦艦ゲームのボードに船を配置することです。多くの時間、私はこれで立ち往生しています。何か案は ?ありがとうございました。!

編集: 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]);

        }
    }
}
4

1 に答える 1

4

名前 (すべての変数名は小文字で始まる必要があるため、変数の不適切な名前) が null であり、設定したことがないことが原因である可能性があります。とにかく JButton の名前について心配する必要はありません。代わりに actionCommand をチェックしてみませんか?

JButton が ActionListener ではなく ChangeListener をトリガーしているのは少し珍しいようです。このコードのビットが何をしていると思われるかについて、より多くの情報を提供していただけますか?

于 2013-04-14T23:29:55.747 に答える