【问题标题】:NullPointer when trying to move oval in java?尝试在Java中移动椭圆时出现NullPointer?
【发布时间】:2020-10-02 22:49:38
【问题描述】:

我遇到了与 Java 中的 paintComponent 方法相关的问题。基本上,我想做的是使用按钮在屏幕上移动一个椭圆。

//public class piedra
 public void paintComponent(Graphics g) {
    //super.paintComponent(g);

    System.out.println(contador);

     if(contador >= 1) {

        g.fillOval(x, y, largo, ancho);

    }

    if (contador == 0) {

        g.setColor(Color.GRAY);
        g.fillOval(x, y, largo, ancho);
        contador++;

    }

}

每个变量都是一个属性,所以我可以使用带有按钮类的框架来操作它们。 这就是我想要做的:

public void actionPerformed(ActionEvent e) {

            piedra.y = piedra.y - 1;
            piedra.paintComponent(piedra.g);

        }

我试图使用 paintComponent 方法在屏幕上移动椭圆,但是当我按下按钮时,程序会抛出 NullPointer 异常。我已经检查了 Y 变量,按下按钮后它会发生变化。就是这样,从这一点开始,我很迷茫。我几乎不记得有一个更新屏幕的功能,但我认为它不会对那个异常做些什么,对吧?任何可能的解决方案?

谢谢!

【问题讨论】:

    标签: java function swing graphics paintcomponent


    【解决方案1】:

    我相信你不应该直接打电话给paintComponent(piedra.g),你应该打电话给repaint()

    【讨论】:

    • 感谢您的回答,现在它不会抛出任何异常,但不幸的是它仍然不起作用,椭圆形只是不会移动......
    • 确认 piedra.y 是调用该方法时paintComponent 内部的预期值。多次按下按钮会发生什么? piedra.y 每次都会改变吗?
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 2019-08-10
    • 2015-04-16
    • 2021-01-24
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多