Swing中Timer定时器的使用

时间:2023-01-14 00:12:23

构造方法:Timer(int delay,ActionListener listener)

 

创建一个每 delay 毫秒将通知其侦听器的 Timer。

 

Api的一段示例代码

 

int delay = 1000; //milliseconds

  ActionListener taskPerformer = new ActionListener()  {

    public void actionPerformed(ActionEvent evt) {

      //...Perform a task...

    }

  };

  new Timer(delay,taskPerformer).start();

 

该代码创建并启动一个每秒激发一次操作事件的计时器(正如该 Timer 构造方法的第一个参数指定的那样)。该 Timer 构造方法的第二个参数指定一个接收该计时器操作事件的侦听器。

 

上面是API上说明,javax.swing.Timer在 GUI编程在组件内容更新时经常用到Timer,例如JTable、JLabel内容更新。

 

下面是一个简单的显示时间的GUI程序,可以加深对Timer的使用的理解:

 

显示时间的swing程序代码

 

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

 

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.Timer;

 

/**

  * 测试swing中Timer的使用

  * 一个显示时间的GUI程序

  * @author Kong.Yee

     *   @E-mail     791663094@qq.com

  *

  */

public class TimerTest extends JFrame implements  ActionListener {

  // 一个显示时间的JLabel

  private JLabel jlTime = new JLabel();

  private Timer timer;

 

  public TimerTest() {

  setTitle("Timer测试");

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  setSize(180,80);

  add(jlTime);

 

  //设置Timer定时器,并启动

  timer = new Timer(500,this);

  timer.start();

  setVisible(true);

  }

 

  /**

  * 执行Timer要执行的部分,

  */

  @Override

  public void actionPerformed(ActionEvent e) {

  DateFormat format = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

  Date date = new Date();

  jlTime.setText(format.format(date));

 

  }

 

  public static void main(String[] args) {

  new TimerTest();

  }

}

 

程序说明:

 

类实现了ActionListener接口,所以可以直接timer = new Timer (500,this);使用this初始化计时器。

 

当计时器启动后(timer.start()执行后),每隔500毫秒执行一次实现的 ActionListener 接口中的actionPerformed的方法体

 

这里在补充一点显示时间格式的知识:

 

DateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");

 

MM表示月份  mm表示分钟   hh:12小时制显示几点 HH:24小时制显示几点

相关文章