在 MouseClicked 中使用 for-each 循环获取每个对象的 getX 和 getY
Using a for-each loop within MouseClicked to getX and getY of each object
我是一个相对缺乏经验的程序员,在 Java 中开发 国际象棋游戏 时遇到了问题。我创建了一个 Handler class
,它将各个部分保存在 LinkedList
中。我现在希望合并使用鼠标选择单个片段并更改它们各自的 x 和 y 坐标 的功能,这是移动它们所必需的。
在我的 MouseClicked()
方法中,我为 LinkedList
中的每个 Piece
对象执行一个 for-each
循环,并检查它们各自的坐标。问题就出现在这里,因为循环执行时出现如下异常:
"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;
}
}
您的 NullPointerException
最可能的原因是您的 LinkedList
中的一个位置不包含实例化的片段。那,或者您的 handler
实例尚未实例化。确保您使用的每个对象都已构建。
我是一个相对缺乏经验的程序员,在 Java 中开发 国际象棋游戏 时遇到了问题。我创建了一个 Handler class
,它将各个部分保存在 LinkedList
中。我现在希望合并使用鼠标选择单个片段并更改它们各自的 x 和 y 坐标 的功能,这是移动它们所必需的。
在我的 MouseClicked()
方法中,我为 LinkedList
中的每个 Piece
对象执行一个 for-each
循环,并检查它们各自的坐标。问题就出现在这里,因为循环执行时出现如下异常:
"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;
}
}
您的 NullPointerException
最可能的原因是您的 LinkedList
中的一个位置不包含实例化的片段。那,或者您的 handler
实例尚未实例化。确保您使用的每个对象都已构建。