Java paint()方法在调用类成员变量函数时给出运行时错误

时间:2018-03-20 16:09:55

标签: java graphics paint paintcomponent

我正在开发一个Java项目,该项目使用paint()方法以及JFrame和Canvas来处理向用户投影网格。

我有一个名为Runner的类,它包含我的main方法。在Runner中,我有java paint()方法。我还在Runner类中有一个Player类型的公共变量。当我尝试调用Player实例变量的公共函数时出现问题。我收到以下运行时错误:

Run-time error

你能不能在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;
}
}

如果需要更多代码来诊断问题,请告诉我,我很乐意提供。非常感谢你的时间。

2 个答案:

答案 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();