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