的Java Swing定时器(Java Swing Timer)

2019-06-23 11:04发布

ActionListener taskPerformer = new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        //...Perform a task...

        logger.finest("Reading SMTP Info.");
    }
};
Timer timer = new Timer(100 ,taskPerformer);
timer.setRepeats(false);
timer.start();

根据文档此计时器应该解雇一次,但它永远不会触发。 我需要它来触发一次。

Answer 1:

这个简单的程序为我工作:

import java.awt.event.*;
import javax.swing.*;

public class Test {
    public static void main(String [] args) throws Exception{
        ActionListener taskPerformer = new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                //...Perform a task...

                System.out.println("Reading SMTP Info.");
            }
        };
        Timer timer = new Timer(100 ,taskPerformer);
        timer.setRepeats(false);
        timer.start();

        Thread.sleep(5000);
    }
}


Answer 2:

该计划将正常工作...

setRepeats(boolean flag)用于设定调用函数function(actionPerformed)反复或者,如果只有一个时间

  1. timer.setRepeats(false) == timer调用actionPerformed方法仅一次
  2. timer.setRepeats(true) == timer调用actionPerformed方法反复基于指定时间

摆动定时器工作

  1. 做任务一次
  2. 做任务的重复时间

步骤来创建摇摆定时器:

  1. 创建的ActionListener
  2. 创建计时器构造然后通过时间和ActionListener的在
  3. 实现actionPerformed()中做你的任务功能
  4. 使用timer.start()用于启动定时器的构造,使用指定的时间之间的任务timer.stop()用于停止任务

例:

ActionListener al=new ActionListener(
public void actionPerformed(ActionEvent ae)
{
 //do your task
 if(work done)
   timer.stop();//stop the task after do the work
}
);
Timer timer=new Timer(1000,al);//create the timer which calls the actionperformed method for every 1000 millisecond(1 second=1000 millisecond)
timer.start();//start the task


Answer 3:

你的任务可能只需要报告事件线程(EDT)上的结果,但在一些周期性的速度做在后台线程的实际工作。

ScheduledExecutorService的 正是你想要的。 只要记住通过SwingUtility.invokeLater以更新EDT UI的状态(...)



Answer 4:

我是从你正在做某种SMTP操作的日志语句猜测。 我想我没有说错的java.swing.Timer是用于UI相关的定时操作,因此为什么它需要和EDT运行。 对于更一般的操作,你应该使用java.util.Timer

本文从JavaDoc中联- http://java.sun.com/products/jfc/tsc/articles/timer/



文章来源: Java Swing Timer
标签: java swing timer