我正在使用摇摆计时器每秒钟获取一个移动物体的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();
}
答案 0 :(得分:1)
您可以通过在班级顶部定义私人计时器,让整个班级都可以访问计时器;
private Timer timer;
然后通过声明:
,像以前一样定义计时器timer = new Timer(delay, taskPerformer).start();
然后在你的if中打电话:
timer.stop();
答案 1 :(得分:1)
ActionEvent
会将生成该事件的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();
}