fillOval()不接受类变量?

时间:2016-04-14 19:58:09

标签: java paintcomponent pong

我不确定为什么但是在我的paintComponent方法中,fillOval函数不允许我传入我的其他类坐标。它提出了:

'线程中的异常“AWT-EventQueue-0”java.lang.NullPointerException'

所有矩形画得很好但不是椭圆形。这是paintComponent()方法。

     public void paintComponent(Graphics graphics){
    graphics.setColor(Color.BLACK);
    graphics.fillRect(0,0,600,450);

    graphics.setColor(Color.WHITE);
    graphics.fillRect(290,0,15,450);
    graphics.fillRect(leftPaddle.getXPos(),leftPaddle.getYPos(),10,85);
    graphics.fillRect(rightPaddle.getXPos(),rightPaddle.getYPos(),10,85);
    graphics.fillOval(ball.getxPos(),ball.getyPos(),ball.getWidth(),ball.getHeight());
}

这是我的Ball类(带有坐标的类)。

public class Ball {
int xPos = 140;
int yPos = 50;
int width = 15;
int height = 15;

public int getWidth() {
    return width;
}

public int getxPos() {
    return xPos;
}

public int getyPos() {
    return yPos;
}

public int getHeight() {
    return height;
}

}

这可能是一个非常简单的解决方法,但我对java相对较新,所以请原谅任何格式错误等。

这是我从MainClass获取对象的地方:

public class PaintComponents extends JPanel{
Paddle leftPaddle;
Paddle rightPaddle;
Ball ball;

public PaintComponents(Paddle leftPaddle, Paddle rightPaddle, Ball ball) {
    this.leftPaddle = leftPaddle;
    this.rightPaddle = rightPaddle;
    this.ball = ball;
}

2 个答案:

答案 0 :(得分:0)

我没看到你在哪里得到ball。所以,

  1. 您可以在Ball ball = new ball()发生之前像fillOval()实例化Ball类。或
  2. 您可以将所有字段和方法标记为static,然后使用Ball.getSth()代替。

答案 1 :(得分:0)

因为它显示NullPointerException 你可能没有创造过这个对象" ball"类Ball 尝试添加:

Ball ball=new Ball();
public void paintComponent(Graphics graphics)

中的

在使用" ball"。

之前