Java Swing Timer

Ham*_*aya 9 java swing timer

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();
Run Code Online (Sandbox Code Playgroud)

根据文档,这个计时器应该发射一次,但它永远不会发射.我需要它一次开火.

kgi*_*kis 18

这个简单的程序适合我:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

该程序将正常工作...

setRepeats(boolean flag)用于设置调用function(actionPerformed)重复或仅一次的函数,如果

  1. timer.setRepeats(false) == timer 只调用一次 actionperformed 方法
  2. timer.setRepeats(true) == timer 根据指定时间重复调用 actionPerformed 方法

摆动定时器工作

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

创建摇摆计时器的步骤:

  1. 创建动作监听器
  2. 创建计时器构造函数,然后在其中传递时间和动作侦听器
  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
Run Code Online (Sandbox Code Playgroud)