Welcome 微信登录

首页 / 软件开发 / JAVA / Swing中Timer定时器的使用

Swing中Timer定时器的使用2010-12-23 javaeye wasw100构造方法: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 wasw100
*
*/
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 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

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