Swing中Timer定时器的使用

类名: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小时制显示几点 

 

你可能感兴趣的:(java)