2015-04-14 3 views
1

Я изо всех сил пытаюсь выяснить, как заставить точку в этой программе менять каждую секунду или две с помощью таймера. Я пробовал некоторые комбинации, но это было неудачно. Я верю, что в 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]); 
} 
    } 
} 
+0

Используйте вложенный контейнер; также обратите внимание, что «Swing-программы должны переопределять' paintComponent() 'вместо переопределения' paint() '." - [* Живопись в AWT и Swing: методы Paint *) (http://www.oracle.com/technetwork /java/painting-140037.html#callbacks). – trashgod

ответ

2

Вызов перекрасить() на компоненте, когда вы хотите, чтобы перекрасить, в противном случае paintComponent (или краски) метод не может быть названо. Возможно, это не связано напрямую, но полезно дать рекомендации (и отмечено в комментарии trashgod): используйте компонент, добавленный в JFrame (например, JPanel), и выполните весь чертеж в методе paintComponent этого компонента (если вы это сделаете, вы должен вызвать перерисовку на этом компоненте).

Смежные вопросы