java swing计时器不会关闭

时间:2011-05-04 20:51:50

标签: java swing netbeans timer

我似乎无法让这个计时器关闭。程序编译,根据我的理解,这应该每1000毫秒或1秒ping一次并执行actionPerformed {}函数中的行。

public void stringGeneration(String args[]){

        ActionListener taskPerformer = new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                String fullIstring = java.lang.String.valueOf(injectString[0] + injectString[1] + injectString[2] + injectString[3] + injectString[4]);
                jLabel3.setText(fullIstring);
                System.out.println("output");
            }
        };
        Timer timer = new Timer(1000, taskPerformer);
        timer.setRepeats(true);
        timer.start();

        //Thread.sleep(500);
        }

2 个答案:

答案 0 :(得分:0)

这就是我在java中执行计划任务的方式:

import java.util.TimerTask;

类HeartBeatTask扩展了TimerTask {

private int timerInterval;

public HeartBeatTask(int timeInterval)
{
    this.timerInterval = timeInterval;
}

public void run() 
{
    // Your  function call to schedule here

}
public static void main(String[] args)
    {
        java.util.Timer t1 = new java.util.Timer();

        HeartBeatTask tt = new HeartBeatTask();
        t1.schedule(tt, 0, 1000 * 60 * 2);
        }

}

希望有所帮助

答案 1 :(得分:0)

我刚刚给了你一个例子而不是复制粘贴的东西。但是如果你想按原样尝试,你可以试试这个。在您的情况下,上面的示例应如下所示:

class HeartBeatTask extends TimerTask {

        private int timerInterval;

        public HeartBeatTask(int timeInterval)
        {
            this.timerInterval = timeInterval;
        }

        public void run() 
        {
            String fullIstring = java.lang.String.valueOf(injectString[0] + injectString[1] + injectString[2] + injectString[3] + injectString[4]);
                        jLabel3.setText(fullIstring);
                        System.out.println("output");

        }

      }

然后您的方法将调用上述类:

public void stringGeneration(String args[]){
     HeartBeatTask tt = new HeartBeatTask();
                t1.schedule(tt, 0, 1000 * 60 * 2);

            }