fillOval() 没有使用 class 个变量?

fillOval() is not taking class variables?

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

'Exception in thread "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());
}

这是我的球 class(带有坐标的 class)。

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;
}

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

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

正如其显示的 NullPointerException 您可能没有创建 class Ball 的对象 "ball" 尝试添加:

Ball ball=new Ball();

public void paintComponent(Graphics graphics)

在使用 "ball".

之前