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
。所以,
- 您可以在
fillOval()
发生之前像 Ball ball = new ball()
一样实例化球 class。或者
- 您可以将所有字段和方法标记为
static
,然后改用 Ball.getSth()
。
正如其显示的 NullPointerException
您可能没有创建 class Ball 的对象 "ball"
尝试添加:
Ball ball=new Ball();
在public void paintComponent(Graphics graphics)
在使用 "ball".
之前
我不确定为什么,但在我的 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
。所以,
- 您可以在
fillOval()
发生之前像Ball ball = new ball()
一样实例化球 class。或者 - 您可以将所有字段和方法标记为
static
,然后改用Ball.getSth()
。
正如其显示的 NullPointerException 您可能没有创建 class Ball 的对象 "ball" 尝试添加:
Ball ball=new Ball();
在public void paintComponent(Graphics graphics)
在使用 "ball".
之前