在MouseClicked中使用for-each循环来获取每个对象的X和getY

时间:2016-12-27 22:49:17

标签: java nullpointerexception chess

我是一位相对缺乏经验的程序员,在 Java 中开发国际象棋游戏期间遇到了问题。我创建了一个Handler class,用于保存LinkedList中的各个部分。我现在希望结合使用鼠标选择单个部分并更改各自 x和y坐标的功能,这是移动它们所必需的。

在我的MouseClicked()方法中,我为for-each中的每个Piece对象执行LinkedList循环,并检查它们各自的坐标。这里出现问题,因为循环执行以下异常发生:

"Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException." 

如何解决此问题?

以下是我的MouseClicked()中的代码:

public void mouseClicked(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    System.out.println(e.getX() + " " + e.getY());
    if(clickMode == 0)
    {
        for(Piece pi: handler.piece)
        {
            if(x >= pi.getX() && x <= pi.getX() + 75 && y >= pi.getY() && y <= pi.getY() + 75)
            {
                System.out.println("Piece Selected");
                pi.isSelected = true;
                clickMode = 1;
            }
        }
    }
    else
    {
        for(Piece pi: handler.piece)
        {
            if(pi.isSelected == true)
            {
                System.out.println("Piece Moved");
                pi.setX(x);
                pi.setY(y);

                pi.isSelected = false;
            }                               
        }
        clickMode = 0;
    }               
}

1 个答案:

答案 0 :(得分:0)

NullPointerException的最可能原因是LinkedList中的某个位置不包含实例化的部分。那个,或者你的handler实例还没有被实例化。确保您构建的每个对象都已构建完毕。