日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

17、Java Swing Timer:计时器组件

發布時間:2025/3/20 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 17、Java Swing Timer:计时器组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

計時器(Timer)組件可以在指定時間間隔觸發一個或多個 ActionEvent。

設置計時器的過程包括創建一個 Timer 對象,在該對象上注冊一個或多個動作偵聽器,以及使用 start() 方法啟動該計時器。

例如,以下代碼創建并啟動一個每秒(該時間由 Timer 構造方法的第一個參數指定)觸發一次動作事件的計時器。Timer 構造方法的第二個參數指定接收計時器動作事件的監聽器。

int delay=1000; //時間間隔,單位為毫秒 ActionListener taskPerformer=new ActionListener() {public void afrfcionPerformed(ActionEvent evt){//具體的任務} }; new Timer(delay,taskPerformer).start();

創建 Timer 類時要指定一個延遲參數一個 ActionListener。

延遲參數用于設置初始延遲和事件觸發之間的延遲(以毫秒為單位)。啟動計時器后,它將在向已注冊監聽器觸發第一個 ActionEvent 之前等待初始延遲。第一個事件之后,每次超過事件間延遲時它都繼續觸發事件,直到被停止。

創建 Timer 類之后,可以單獨更改初始延遲和事件間延遲,并且可以添加其他 ActionListener。如果希望計時器只在第一次時觸發然后停止,可以對計時器調用 setRepeats(false)

Timer類的常用方法:

  • addActionListener(ActionListener 1)---- 將一個動作監聽器添加到 Timer
  • getDelay()---- 返回兩次觸發動作事件間延遲,以毫秒為單位
  • isCoalesce()---- 如果 Timer 組合多個掛起的動作事件,則返回 true
  • isRunning() ----如果 Timer 正在運行,則返回 true
  • restart()---- 重新啟動 Timer,取消所有掛起的觸發并使它按初始延遲觸發
  • setCoalesce(boolean flag)---- 設置 Timer 是否組合多個掛起的 ActionEvent
  • setDelay(int delay)---- 設置 Timer 的事件間延遲,兩次連續的動作事件之間的毫秒數
  • setLogTimers(boolean flag)---- 啟用/禁用計時器日志
  • setRepeats(boolean flag) ----如果 flag 為 false,則指示 Timer 只向其監聽器發送一次動作事件
  • start() ----啟動 Timer,使它開始向其監聽器發送動作事件
  • stop()---- 停止 Timer,使它停止向其監聽器發送動作事件

例 1
編寫一個實例,模擬軟件安裝過程中顯示安裝進度信息的進度條。該實例中使用 Timer 類模擬安裝軟件的實際過程,JProgressBar 類顯示相應的進度信息,主要實現過程如下。

(1) 創建一個 JProgressBarDemo1 類并實現 ActionListener 接口和 ChangeListener 接口。

import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.Timer; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class JProgressBarDemo1 implements ActionListener,ChangeListener {JFrame frame=null;JProgressBar progressbar;JLabel label;Timer timer;JButton b;public static void main(String[] agrs){new JProgressBarDemo1(); //創建一個實例化對象} }

(2) 在構造方法中對進度條和計時器進行設置。主要代碼如下:

public JProgressBarDemo1() {frame=new JFrame("軟件安裝");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container contentPane=frame.getContentPane();label=new JLabel(" ",JLabel.CENTER); //創建顯示進度信息的文本標簽progressbar=new JProgressBar(); //創建一個進度條progressbar.setOrientation(JProgressBar.HORIZONTAL);//進度條的方向progressbar.setMinimum(0);//設置進度條的最小值 progressbar.setMaximum(100);progressbar.setValue(0);progressbar.setStringPainted(true);progressbar.addChangeListener(this); //添加事件監聽器//設置進度條的幾何形狀progressbar.setPreferredSize(new Dimension(300,20));progressbar.setBorderPainted(true);//繪制其邊框progressbar.setBackground(Color.pink);//添加啟動按鈕JPanel panel=new JPanel();b=new JButton("安裝");b.setForeground(Color.blue);//添加事件監聽器b.addActionListener(this);panel.add(b);timer=new Timer(100, this); //創建一個計時器,計時間隔為100毫秒//把組件添加到frame中contentPane.add(panel,BorderLayout.NORTH);contentPane.add(progressbar,BorderLayout.CENTER);contentPane.add(label,BorderLayout.SOUTH);frame.pack();frame.setVisible(true); }

(3) 實現 ActionListener 接口中的 actionPerformed() 方法,在這里控制計時器的開始,以及進度條值的變化。具體代碼如下:

//實現事件監聽器接口中的方法 public void actionPerformed(ActionEvent e) {if(e.getSource()==b)timer.start();if(e.getSource()==timer){int value=progressbar.getValue();if(value<100){progressbar.setValue(++value);}else{timer.stop();frame.dispose();}} }

(4) 實現 ChangeListener 接口中的 stateChange() 方法,具體代碼如下:

public void stateChanged(ChangeEvent e1) //實現事件監聽器接口中的方法 {int value=progressbar.getValue();if(e1.getSource()==progressbar){label.setText("目前已完成進度:"+Integer.toString(value)+" %");label.setForeground(Color.blue);} }

(5) 運行程序,默認情況下進度條是 0%,如圖 1 所示。

單擊“安裝”按鈕后進度會一直發生變化,如圖 2 所示。

總結

以上是生活随笔為你收集整理的17、Java Swing Timer:计时器组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。