我正在开发一个Java项目,该项目使用paint()方法以及JFrame和Canvas来处理向用户投影网格。
我有一个名为Runner的类,它包含我的main方法。在Runner中,我有java paint()方法。我还在Runner类中有一个Player类型的公共变量。当我尝试调用Player实例变量的公共函数时出现问题。我收到以下运行时错误:
你能不能在paint()方法中调用其他函数吗? Java文档没有提到这个行为会很糟糕,据我所知,Java的理解有限。
我将在下面提供一些代码。我会尽力只包含与问题相关的代码片段,以使您的工作更轻松。
此声明属于我的班级Runner:
//Player
public Player player;
以下是paint方法的代码:
public void paint(Graphics g)
{
//(Code that draws grid from 2D array to screen)
// . . .
//Draw player
int playerX = 1 + (int)numRows/2;
int playerY = 1 + (int)numCols/2;
//CAUSE OF ERROR*******************
//Sets playerX and playerY
player.setPlayerX(playerX);
player.setPlayerY(playerY);
//*********************************
array[playerX][playerY] = 1;
}
以下是Player类的代码:
public class Player {
private int playerX;
private int playerY;
private int playerHealth;
//Constructor
Player()
{
playerHealth = 100;
}
//Getters
// . . .
//Setters
public void setPlayerX(int x)
{
playerX = x;
}
public void setPlayerY(int y)
{
playerY = y;
}
}
如果需要更多代码来诊断问题,请告诉我,我很乐意提供。非常感谢你的时间。
答案 0 :(得分:0)
正如@Gimby指出的那样,问题可能是由于声明player = new Player()未被包含或未被到达而导致的。这就是问题所在。我将line player = new Player()移动到了Runner构造函数中,因为出于某种原因我忘了把它放在那里。感谢大家,特别是@Gimby的帮助。
答案 1 :(得分:-1)
告诉我
Runner class
object
班级value=null
Runner
line 145
{/ 1}}。
而你导致NullPointerException
,因为你在对象上调用某些内容,即= null
。
可能会对你的情况有所帮助:
Object o = null;
o.toString(); //throw NullPointerException
并修复它:
Object o = new Object();
o.toString();