Hej,

Przerzuciłem się na rysowanie grafiki 2d poprzez dodawanie i rysowanie figur z wykorzystaniem ArrayList. Problem polega w tym, że nie wiem dlaczego figury rysowane z ArrayList nie poruszają się, mimo, że współrzędne są aktualizowane. Moglibyście zerknąć na kod poniżej i zasugerować co robię nie tak lub czego jeszcze brakuje? Poza tym czy w poprawny sposób używam Timera? Czy strukturalnie powinienem to inaczej poukładać?

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Ellipse2D.Double;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class Grap extends JPanel implements ActionListener {
    Timer t = new Timer(5, this);
    double x = 100, y = 100;

    ArrayList<Shape> shapes = new ArrayList<Shape>();

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;

        for(Shape r: shapes) {

            g2.draw(r);
        }

        t.start();
    }

    public Grap() {

        JFrame f = new JFrame();
        f.add(this);
        f.setVisible(true);
        f.setSize(500,500);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Double circle2 = new Ellipse2D.Double(x, y, 40, 40);
        shapes.add(circle2);

    }   

    @Override
    public void actionPerformed(ActionEvent e) {

        x = x + 1;
        y = y + 1;

        repaint();

    }

    public static void main(String[] args) {

     new Grap();

}}

Pozdrawiam