|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.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 - 初始侦听器;可以为 nulladdActionListener(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 - 要触发的动作事件EventListenerListpublic <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 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。