|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.swing.Timer
public class Timer
在指定時間間隔觸發一個或多個 ActionEvent
。一個範例用法是動畫物件,它將 Timer
用作繪製其幀的觸發器。
設置計時器的過程包括創建一個 Timer
物件,在該物件上註冊一個或多個動作偵聽器,以及使用 start
方法啟動該計時器。例如,以下程式碼創建並啟動一個每秒(該時間由 Timer
建構子的第一個參數指定)觸發一次動作事件的計時器。Timer
建構子的第二個參數指定接收計時器動作事件的偵聽器。
int delay = 1000; //milliseconds ActionListener taskPerformer = new ActionListener() { public void actionPerformed(ActionEvent evt) { //...Perform a task... } }; new Timer(delay, taskPerformer).start();
建構 Timer
時要指定一個延遲參數和一個 ActionListener
。延遲參數用於設置初始延遲和事件觸發之間的延遲(以毫秒為單位)。啟動了計時器後,它將在向已註冊偵聽器觸發第一個 ActionEvent
之前等待初始延遲。第一個事件之後,每次超過事件間延遲時它都繼續觸發事件,直到被停止。
建構之後,可以單獨更改初始延遲和事件間延遲,並且可以添加其他 ActionListener
。
如果希望計時器只在第一次時觸發然後停止,可以對計時器調用 setRepeats(false)
。
儘管所有 Timer
都使用一個共享執行緒(由第一個執行操作的 Timer
物件創建)執行等待,但是 Timer
的動作事件處理程序還會在其他執行緒(事件指派執行緒上)執行。這意味著 Timer
的操作處理程序可以安全地在 Swing 元件上執行操作。但是,它也意味著處理程序必須快速執行以保證 GUI 作出回應。
在 1.3 版本中,向 Java 平臺添加了另一個 Timer
類別:java.util.Timer
。該類別和 javax.swing.Timer
的基本功能相同,但是 java.util.Timer
更常用,功能更多。javax.swing.Timer
有兩個特徵,它們可以讓使用 GUI 更方便。首先,其事件處理程序都是 GUI 開發人員所熟悉的,並且可以更簡單地處理事件指派執行緒。第二,其自動執行緒共享意味著不必採取特殊步驟來避免產生過多執行緒。相反,計時器使用同一個執行緒讓鼠標閃爍、使工具提示顯示等等。
通過查看 The Java Tutorial 中的 How to Use Timers 一節,可以找到使用計時器的更詳細的文檔和幾個範例。有關在此 Timer
類別和 java.util.Timer
之間進行選擇的更多範例和說明資訊,請參閱 The Swing Connection 中的 Using Timers in Swing Applications 一文。
警告:此類別的序列化物件與以後的 Swing 版本不相容。當前序列化支持適用於短期存儲,或適用於在運行相同 Swing 版本的應用程序之間進行 RMI(Remote Method Invocation,遠端方法調用)。從 1.4 版本開始,已在 java.beans
套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參閱 XMLEncoder
。
java.util.Timer
欄位摘要 | |
---|---|
protected EventListenerList |
listenerList
|
建構子摘要 | |
---|---|
Timer(int delay,
ActionListener listener)
創建一個 Timer 並將初始延遲和事件間延遲初始化為 delay 毫秒。 |
方法摘要 | ||
---|---|---|
void |
addActionListener(ActionListener listener)
將一個動作偵聽器添加到 Timer 。 |
|
protected void |
fireActionPerformed(ActionEvent e)
通知為此事件型別的通知而註冊的所有偵聽器。 |
|
String |
getActionCommand()
返回將作為此計時器所觸發的 ActionEvent 中的動作命令傳遞的字元串。 |
|
ActionListener[] |
getActionListeners()
返回已在此計時器上註冊的所有動作偵聽器所組成的陣列。 |
|
int |
getDelay()
返回兩次觸發動作事件間延遲,以毫秒為單位。 |
|
int |
getInitialDelay()
返回 Timer 的初始延遲。 |
|
|
getListeners(Class<T> listenerType)
返回目前已在此 Timer 上註冊為 FooListener 的所有物件所組成的陣列。 |
|
static boolean |
getLogTimers()
如果啟用了日誌記錄,則返回 true 。 |
|
boolean |
isCoalesce()
如果 Timer 組合多個掛起的動作事件,則返回 true 。 |
|
boolean |
isRepeats()
如果 Timer 多次將一個動作事件發送到其偵聽器,則返回 true (預設)。 |
|
boolean |
isRunning()
如果 Timer 正在運行,則返回 true 。 |
|
void |
removeActionListener(ActionListener listener)
從 Timer 移除指定的動作偵聽器。 |
|
void |
restart()
重新啟動 Timer ,取消所有掛起的觸發並使它按初始延遲觸發。 |
|
void |
setActionCommand(String command)
設置將作為此計時器所觸發的 ActionEvent 中的動作命令傳遞的字元串。 |
|
void |
setCoalesce(boolean flag)
設置 Timer 是否組合多個掛起的 ActionEvent 觸發。 |
|
void |
setDelay(int delay)
設置 Timer 的事件間延遲,兩次連續的動作事件之間的毫秒數。 |
|
void |
setInitialDelay(int initialDelay)
設置 Timer 的初始延遲,即啟動計時器後觸發第一個事件之前要等待的時間(以毫秒為單位)。 |
|
static void |
setLogTimers(boolean flag)
啟用/禁用計時器日誌。 |
|
void |
setRepeats(boolean flag)
如果 flag 為 false ,則指示 Timer 只向其偵聽器發送一次動作事件。 |
|
void |
start()
啟動 Timer ,使它開始向其偵聽器發送動作事件。 |
|
void |
stop()
停止 Timer ,使它停止向其偵聽器發送動作事件。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
protected EventListenerList listenerList
建構子詳細資訊 |
---|
public Timer(int delay, ActionListener listener)
Timer
並將初始延遲和事件間延遲初始化為 delay
毫秒。如果 delay
小於等於 0,則該計時器一啟動就觸發事件。如果 listener
不為 null
,則它會在計時器上註冊為動作偵聽器。
delay
- 初始延遲和動作事件間延遲的毫秒數listener
- 初始偵聽器;可以為 null
addActionListener(java.awt.event.ActionListener)
,
setInitialDelay(int)
,
setRepeats(boolean)
方法詳細資訊 |
---|
public void addActionListener(ActionListener listener)
Timer
。
listener
- 要添加的偵聽器Timer(int, java.awt.event.ActionListener)
public void removeActionListener(ActionListener listener)
Timer
移除指定的動作偵聽器。
listener
- 要移除的偵聽器public ActionListener[] getActionListeners()
ActionListener
;如果當前沒有註冊任何動作偵聽器,則返回一個空陣列addActionListener(java.awt.event.ActionListener)
,
removeActionListener(java.awt.event.ActionListener)
protected void fireActionPerformed(ActionEvent e)
e
- 要觸發的動作事件EventListenerList
public <T extends EventListener> T[] getListeners(Class<T> listenerType)
Timer
上註冊為 FooListener
的所有物件所組成的陣列。FooListener
是使用 addFooListener
方法註冊的。
可以用一個類別文字值(比如 FooListener.class
)指定 listenerType
參數。例如,可以使用下面的程式碼查詢 Timer
實例 t
的動作偵聽器:
ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));如果不存在這樣的偵聽器,則此方法將返回一個空陣列。
listenerType
- 所請求的偵聽器的型別;該參數應該指定一個從 java.util.EventListener
繼承的介面
FooListener
的所有物件所組成的陣列;如果沒有添加這樣的偵聽器,則返回一個空陣列
ClassCastException
- 如果 listenerType
沒有指定實作 java.util.EventListener
的類別或介面getActionListeners()
,
addActionListener(java.awt.event.ActionListener)
,
removeActionListener(java.awt.event.ActionListener)
public static void setLogTimers(boolean flag)
System.out
發送一條資訊。
flag
- true
表示要啟用日誌記錄getLogTimers()
public static boolean getLogTimers()
true
。
true
;否則,返回 falsesetLogTimers(boolean)
public void setDelay(int delay)
Timer
的事件間延遲,兩次連續的動作事件之間的毫秒數。這不會影響初始延遲屬性,該屬性可由 setInitialDelay
方法設置。
delay
- 以毫秒為單位的延遲setInitialDelay(int)
public int getDelay()
setDelay(int)
,
getInitialDelay()
public void setInitialDelay(int initialDelay)
Timer
的初始延遲,即啟動計時器後觸發第一個事件之前要等待的時間(以毫秒為單位)。建構時,此延遲設置為與事件間延遲相同,但是其值是獨立的,並且不受事件間延遲更改的影響。
initialDelay
- 初始延遲(以毫秒為單位)setDelay(int)
public int getInitialDelay()
Timer
的初始延遲。
setInitialDelay(int)
,
setDelay(int)
public void setRepeats(boolean flag)
flag
為 false
,則指示 Timer
只向其偵聽器發送一次動作事件。
flag
- 指定 false
將使計時器在發送第一個動作事件之後停止public boolean isRepeats()
Timer
多次將一個動作事件發送到其偵聽器,則返回 true
(預設)。
setRepeats(boolean)
public void setCoalesce(boolean flag)
Timer
是否組合多個掛起的 ActionEvent
觸發。忙碌的應用程序可能跟不上 Timer
的事件產生速度,導致多個動作事件排隊。當處理這些事件時,應用程序會一個接一個地進行發送,導致 Timer
的偵聽器收到一個沒有事件間延遲的事件序列。組合操作可以將多個掛起的事件減少為一個事件,從而避免了這種情況的發生。預設情況下 Timer
將組合事件。
flag
- 指定 false
將關閉組合public boolean isCoalesce()
Timer
組合多個掛起的動作事件,則返回 true
。
setCoalesce(boolean)
public void setActionCommand(String command)
ActionEvent
中的動作命令傳遞的字元串。null
是可接受的值。
command
- 動作命令public String getActionCommand()
ActionEvent
中的動作命令傳遞的字元串。可以為 null
, null
也是預設值。
public void start()
Timer
,使它開始向其偵聽器發送動作事件。
stop()
public boolean isRunning()
Timer
正在運行,則返回 true
。
start()
public void stop()
Timer
,使它停止向其偵聽器發送動作事件。
start()
public void restart()
Timer
,取消所有掛起的觸發並使它按初始延遲觸發。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。