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