Я изо всех сил пытаюсь выяснить, как заставить точку в этой программе менять каждую секунду или две с помощью таймера. Я пробовал некоторые комбинации, но это было неудачно. Я верю, что в ActionListener есть что-то, что я, возможно, не смог.Как реализовать таймер правильного пути в JFrame
ArrayList<Point> punkter = new ArrayList<Point>();
int i = 0;
int n = 0;
public Point[] point = null;
private Timer timer;
Random rg = new Random();
public timer(){
this.setTitle("Draw");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(1010, 710);
this.setLayout(null);
this.setLocationRelativeTo(null);
point = new Point[100];
this.setVisible(true);
timer = new Timer(500,this);
timer.start();
}
public void paint(Graphics g){
super.paint(g);
for (int i = 0; i < punkter.size(); i++) {
Point a = punkter.get(i);
Point b = punkter.get((i+1)%punkter.size());
g.fillOval(a.x, a.y, 5, 5);
g.drawLine(a.x, a.y, b.x, b.y);
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
for(int i = 0;i < 100;i++){
point[i] = new Point(rg.nextInt(1000), rg.nextInt(700));
punkter.add(point[i]);
}
}
}
Используйте вложенный контейнер; также обратите внимание, что «Swing-программы должны переопределять' paintComponent() 'вместо переопределения' paint() '." - [* Живопись в AWT и Swing: методы Paint *) (http://www.oracle.com/technetwork /java/painting-140037.html#callbacks). – trashgod