如何在不终止的情况下停止挥杆计时器?

时间:2016-01-10 21:09:05

标签: java swing timer

我正在使用摇摆计时器每秒钟获取一个移动物体的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();


}

2 个答案:

答案 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();
}