2016-01-10 29 views
1

我正在使用一个摆动计时器来每秒获得移动物体的x位置10秒钟并将其保存在一个数组中。现在,我可以停止重复计时器的唯一方法是使用System.exit(0);.如何停止计时器并继续执行其余的代码?如何停止摆动定时器而不终止?

int k=0; 
{ 
int delay = 1000; //milliseconds 
ActionListener taskPerformer = new ActionListener() 
{ 

    public void actionPerformed(ActionEvent evt) 
    { 
     for (int i=0;i<1;i++) 
     { 

      obj1pos[k]=x; 
      System.out.println(obj1pos[k]); 
      k+=1; 
     } 
     if (k>=10){ 
      for (int i=0;i<10;i++){ 
       System.out.print(obj1pos[i]+", ");} 
      System.exit(0);} 


    } 
}; 

new Timer(delay, taskPerformer).start(); 


} 

回答

1

ActionEvent会把你产生了source事件,在这种情况下,这是Timer的实例

所以,你可以只投的ActionEvent#getSourceTimer,并呼吁它stop,当您需要...

if (k>=10){ 
    for (int i=0;i<10;i++){ 
     System.out.print(obj1pos[i]+", "); 
    } 
    System.exit(0); 
    ((Timer)(evt.getSource())).stop(); 
} 
1

通过在班级顶部定义一个私人计时器,您可以在整个班级中使计时器可用;

private Timer timer; 

然后定义定时器,你以前做时指出:

timer = new Timer(delay, taskPerformer).start(); 

然后在你的,如果只要致电:

timer.stop();