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小時制顯示幾點 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章