|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.swing
类 Timer
java.lang.Object javax.swing.Timer
- 所有已实现的接口:
- Serializable
-
public class Timer
- extends Object
- implements Serializable
在指定延迟之后激发一个或多个操作事件。例如,动画对象可以将 Timer
用作绘制其帧 (frame) 的触发器。
设置一个计时器包括创建一个 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
有一个或多个操作侦听器和一个 delay(操作事件之间的时间)。经过 delay 毫秒后,该 Timer
将激发一个其侦听器的操作事件。默认情况下,调用 stop
方法之前此循环将重复进行。如果希望计时器只激发一次,则调用该计时器上的 setRepeats(false)
。要使第一个操作事件之前的延迟不同于事件之间的延迟,请使用 setInitialDelay
方法。
尽管所有 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) 创建一个每 delay 毫秒将通知其侦听器的 Timer 。 |
方法摘要 | ||
---|---|---|
void |
addActionListener(ActionListener listener) 将一个操作侦听器添加到 Timer 。 |
|
protected void |
fireActionPerformed(ActionEvent e) 通知为此事件类型的通知而注册的所有侦听器。 |
|
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 |
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 |
字段详细信息 |
---|
listenerList
protected EventListenerList listenerList
构造方法详细信息 |
---|
Timer
public Timer(int delay, ActionListener listener)
-
创建一个每
delay
毫秒将通知其侦听器的Timer
。如果delay
小于或等于零,则该计时器将在一启动就开始工作。如果listener
不为null
,则它会在计时器上注册为操作侦听器。- 参数:
delay
- 操作事件之间的毫秒数listener
- 初始侦听器;可以为null
- 另请参见:
addActionListener(java.awt.event.ActionListener)
,setInitialDelay(int)
,setRepeats(boolean)
方法详细信息 |
---|
addActionListener
public void addActionListener(ActionListener listener)
-
将一个操作侦听器添加到
Timer
。 -
-
- 参数:
listener
- 要添加的侦听器- 另请参见:
Timer(int, java.awt.event.ActionListener)
removeActionListener
public void removeActionListener(ActionListener listener)
-
从
Timer
移除指定的操作侦听器。 -
-
- 参数:
listener
- 要移除的侦听器
getActionListeners
public ActionListener[] getActionListeners()
- 返回已在此计时器上注册的所有操作侦听器的数组。
-
-
- 返回:
-
此计时器的所有
ActionListener
;如果当前没有注册任何操作侦听器,则返回一个空数组。 - 从以下版本开始:
- 1.4
- 另请参见:
addActionListener(java.awt.event.ActionListener)
,removeActionListener(java.awt.event.ActionListener)
fireActionPerformed
protected void fireActionPerformed(ActionEvent e)
- 通知为此事件类型的通知而注册的所有侦听器。
-
-
- 参数:
e
- 要激发的操作事件- 另请参见:
EventListenerList
getListeners
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
的类或接口- 从以下版本开始:
- 1.3
- 另请参见:
getActionListeners()
,addActionListener(java.awt.event.ActionListener)
,removeActionListener(java.awt.event.ActionListener)
setLogTimers
public static void setLogTimers(boolean flag)
-
启用/禁用该计时器日志。启用其日志时,每当该计时器退出时,就会向
System.out
发送一条信息。 -
-
- 参数:
flag
-true
表示要启用日志记录- 另请参见:
getLogTimers()
getLogTimers
public static boolean getLogTimers()
-
如果启用了日志记录,则返回
true
。 -
-
- 返回:
-
如果启用了日志记录,则返回
true
;否则,返回 false - 另请参见:
setLogTimers(boolean)