类名:javax.swing.Timer
构造方法:Timer(int delay, ActionListener listener)
创建一个每 delay
毫秒将通知其侦听器的 Timer
。
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的使用的理解:
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小时制显示几点