【问题标题】:"AWT-EventQueue-0" java.lang.NullPointerException" Error During ChangeListener Execution [duplicate]ChangeListener 执行期间的“AWT-EventQueue-0”java.lang.NullPointerException”错误[重复]
【发布时间】:2013-04-14 23:26:46
【问题描述】:

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

编辑: 我将字符串名称的名称更改为字符串 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]);

        }
    }
}

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 找到了伙计们,我忘了在 for 循环中输入正确的名称:this.myBoard[x][y].setName(null);

标签: java swing nullpointerexception listener changelistener


【解决方案1】:

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

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

【讨论】:

  • 也许 OP 的意思是 getText 而不是 getName
  • 都试过了,都没有用......
  • 还有其他想法吗? @hovercraft... 此代码从 JButton 中拖出一艘船,并将其放置到 BATTLESHIP 游戏项目的板上
  • @mkontakis:如果没有更多上下文,很难猜测还有什么问题。我同意 [sscce](http:sscce.org) 将有很大帮助,这是一个小程序,除了您当前问题的最低限度之外什么都不做,以向我们说明问题。
猜你喜欢
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多