2016-01-10 58 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();