[英]How to stop a swing timer without terminating?
我正在使用擺動計時器,以每秒10秒的速度獲取移動對象的x位置並將其保存在數組中。 現在,我可以停止計時器重復的唯一方法是使用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();
}
您可以通過在班級頂部定義一個私有計時器來使計時器在整個班級都可訪問;
private Timer timer;
然后,通過聲明以下內容來定義計時器:
timer = new Timer(delay, taskPerformer).start();
然后在您的if內調用:
timer.stop();
ActionEvent
將向您傳遞生成事件的source
,在這種情況下,該source
是Timer
的實例
因此,您可以將ActionEvent#getSource
轉換為Timer
並在需要時在其上調用stop
。
if (k>=10){
for (int i=0;i<10;i++){
System.out.print(obj1pos[i]+", ");
}
System.exit(0);
((Timer)(evt.getSource())).stop();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.