Swing Timer を使用して Java で楕円をアニメーション化しようとしています。次のコードでうまくいくと思いますが、プログラムを実行すると、タイマーがNullPointerException. それがなぜなのかについての考えはありますか?
関連性がないため、メインラインのコードを除外しました。これは私のエラーです。これは、actionlistenerのactionperformedメソッドの最初の行で発生します。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Timer$MoveListener.actionPerformed(Timer.java:18)
パネル クラス:
import java.awt.geom.*;
public class Glitchpanel extends javax.swing.JPanel {
    private Ellipse ellipse;
    private java.awt.Dimension size;
    private Timer timer;
    public Glitchpanel() {
        super();
        ellipse = new Ellipse();
        size = new java.awt.Dimension(1000, 1000);
        timer = new Timer(ellipse, this);
        timer.start();
        this.setSize(size);
        this.setPreferredSize(size); 
        this.setBackground(java.awt.Color.WHITE);
}
    public void paintComponent(java.awt.Graphics g) {
        super.paintComponent(g);
        java.awt.Graphics2D brush = (java.awt.Graphics2D) g;
        brush.draw(ellipse);
    }
}
タイマー クラス:
import java.awt.geom.*;
public class Timer extends javax.swing.Timer {
    private Glitchpanel glitch;
    private Ellipse ellipse;
    public Timer(Ellipse ellipse, Glitchpanel glitch) {
        super(100, null);
        ellipse = ellipse;
        glitch = glitch;
        this.addActionListener(new MoveListener());
    }
    private class MoveListener implements java.awt.event.ActionListener {
        public void actionPerformed(java.awt.event.ActionEvent e) {
            ellipse.setX(ellipse.getX()+1);
            ellipse.setY(ellipse.getY()+1);
            glitch.repaint();
        }
    }
}
Shape クラス (このオブジェクトをアニメーション化しようとしています):
public class Ellipse extends java.awt.geom.Ellipse2D.Double {
    private Glitchpanel glitch;
    private double x, y, w, h;
    public Ellipse() {
        super();
        double x = 100;
        double y = 100;
        double w = 100;
        double h = 100;
        this.setFrame(x, y, w, h);
    }
    public void setX(double x2) {
        x = x2;
    }
    public void setY(double y2) {
        y = y2;
    }
}