- java.lang.Object
-
- javax.swing.Timer
-
- 实现的所有接口
-
Serializable
public class Timer extends Object implements Serializable
ActionEvent
指定的时间间隔触发一个或多个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();
通过指定延迟参数和
Timers
来构造ActionListener
。 delay参数用于设置初始延迟和事件触发之间的延迟(以毫秒为单位)。 一旦计时器启动,它会在向注册的听众发射第一个ActionEvent
之前等待初始延迟。 在第一个事件之后,它会在每次事件间延迟结束后继续触发事件,直到它停止。在构造之后,可以独立地改变初始延迟和事件间延迟,并且可以添加额外的
ActionListeners
。如果您希望计时器仅在第一次触发然后停止,
setRepeats(false)
在计时器上调用setRepeats(false)
。虽然所有
Timer
S使用单个,共享线程(由第一创建的执行它们的等待Timer
对象执行),该动作的事件处理程序Timer
的execute在另一个线程-事件派发线程。 这意味着Timer
的操作处理程序可以安全地对Swing组件执行操作。 但是,这也意味着处理程序必须快速执行以保持GUI响应。在v 1.3中,另一个
Timer
类被添加到Java平台: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。 从1.4开始,对
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 从以下版本开始:
- 1.2
- 另请参见:
-
Timer
, Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 protected EventListenerList
listenerList
已注册听众的集合
-
构造方法摘要
构造方法 构造器 描述 Timer(int delay, ActionListener listener)
创建一个Timer
并将初始延迟和事件间延迟初始化为delay
毫秒。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 void
addActionListener(ActionListener listener)
向Timer
添加动作侦听Timer
。protected void
fireActionPerformed(ActionEvent e)
通知所有已注册对此事件类型的通知感兴趣的听众。String
getActionCommand()
返回将作为此计时器触发的ActionEvent
的操作命令传递的字符串。ActionListener[]
getActionListeners()
返回在此计时器上注册的所有动作侦听器的数组。int
getDelay()
返回动作事件触发之间的延迟(以毫秒为单位)。int
getInitialDelay()
返回Timer
的初始延迟。<T extends EventListener>
T[]getListeners(类<T> listenerType)
返回当前注册的所有对象的数组FooListener
在这个STimer
。static boolean
getLogTimers()
如果启用了日志记录,则返回true
。boolean
isCoalesce()
如果Timer
合并多个待处理操作事件,则返回true
。boolean
isRepeats()
如果Timer
将多次向其侦听器发送操作事件,则返回true
(默认值)。boolean
isRunning()
如果Timer
正在运行,则返回true
。void
removeActionListener(ActionListener listener)
从Timer
删除指定的动作侦听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
,使其停止向其侦听器发送动作事件。
-
-
-
字段详细信息
-
listenerList
protected EventListenerList listenerList
已注册听众的集合
-
-
构造方法详细信息
-
Timer
public Timer(int delay, ActionListener listener)
创建一个Timer
并将初始延迟和事件间延迟初始化为delay
毫秒。 如果delay
小于或等于零,则计时器一启动就会触发。 如果listener
不是null
,则它在计时器上注册为动作侦听器。- 参数
-
delay
- 初始和事件间延迟的毫秒数 -
listener
- 初始听众; 可以是null
- 另请参见:
-
addActionListener(java.awt.event.ActionListener)
,setInitialDelay(int)
,setRepeats(boolean)
-
-
方法详细信息
-
addActionListener
public void addActionListener(ActionListener listener)
向Timer
添加动作侦听Timer
。- 参数
-
listener
- 要添加的侦听器 - 另请参见:
-
Timer(int, java.awt.event.ActionListener)
-
removeActionListener
public void removeActionListener(ActionListener listener)
从Timer
删除指定的动作侦听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(类<T> listenerType)
返回当前注册的所有对象的数组FooListener
在这个STimer
。FooListener
s使用addFooListener
方法注册。您可以使用类文字指定
listenerType
参数,例如FooListener.class
。 例如,您可以使用以下代码查询Timer
实例t
作为其动作侦听器:ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));
如果不存在此类侦听器,则此方法返回空数组。- 参数类型
-
T
- 被请求的EventListener
类的类型 - 参数
-
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
如果启用了日志记录; 否则,是的 - 另请参见:
-
setLogTimers(boolean)
-
setDelay
public void setDelay(int delay)
设置Timer
的事件间延迟,即连续动作事件之间的毫秒数。 这不会影响初始延迟属性,可以通过setInitialDelay
方法设置。- 参数
-
delay
- 延迟(以毫秒为单位) - 另请参见:
-
setInitialDelay(int)
-
getDelay
public int getDelay()
返回动作事件触发之间的延迟(以毫秒为单位)。- 结果
- 动作事件发生之间的延迟(以毫秒为单位)
- 另请参见:
-
setDelay(int)
,getInitialDelay()
-
setInitialDelay
public void setInitialDelay(int initialDelay)
设置Timer
的初始延迟,即在触发第一个事件之前计时器启动后等待的时间(以毫秒为单位)。 在构造时,这被设置为与事件间延迟相同,但是其值是独立的并且不受事件间延迟的改变的影响。- 参数
-
initialDelay
- 初始延迟,以毫秒为单位 - 另请参见:
-
setDelay(int)
-
getInitialDelay
public int getInitialDelay()
返回Timer
的初始延迟。- 结果
-
Timer
的初始延迟,以毫秒为单位 - 另请参见:
-
setInitialDelay(int)
,setDelay(int)
-
setRepeats
public void setRepeats(boolean flag)
如果flag
是false
,则指示Timer
仅向其侦听器发送一个操作事件。- 参数
-
flag
- 指定false
以使计时器在发送其第一个操作事件后停止
-
isRepeats
public boolean isRepeats()
如果Timer
将多次向其侦听器发送操作事件,则返回true
(默认值)。- 结果
-
如果
Timer
将多次向其侦听器发送动作事件,Timer
true - 另请参见:
-
setRepeats(boolean)
-
setCoalesce
public void setCoalesce(boolean flag)
设置Timer
是否合并多个待处理的ActionEvent
点火。 繁忙的应用程序可能无法跟上Timer
的事件生成,导致多个操作事件排队。 处理后,应用程序一个接一个地发送这些事件,导致Timer
的侦听器接收到一系列事件,它们之间没有延迟。 合并通过将多个待处理事件减少到单个事件来避免这种情况。Timer
s默认情况下合并事件。- 参数
-
flag
- 指定false
以关闭合并
-
isCoalesce
public boolean isCoalesce()
如果Timer
合并多个待处理操作事件,则返回true
。- 结果
-
如果
Timer
合并多个待处理操作事件,Timer
true - 另请参见:
-
setCoalesce(boolean)
-
setActionCommand
public void setActionCommand(String command)
设置将作为此计时器触发的ActionEvent
的操作命令传递的字符串。null
是可接受的值。- 参数
-
command
- 动作命令 - 从以下版本开始:
- 1.6
-
getActionCommand
public String getActionCommand()
返回将作为此计时器触发的ActionEvent
的操作命令传递的字符串。 可能是null
,这也是默认值。- 结果
- 触发事件中使用的动作命令
- 从以下版本开始:
- 1.6
-
start
public void start()
启动Timer
,使其开始向其侦听器发送动作事件。- 另请参见:
-
stop()
-
isRunning
public boolean isRunning()
如果Timer
正在运行,则返回true
。- 结果
-
如果
Timer
正在运行,Timer
true,否则为false - 另请参见:
-
start()
-
stop
public void stop()
停止Timer
,使其停止向其侦听器发送操作事件。- 另请参见:
-
start()
-
restart
public void restart()
重新启动Timer
,取消任何待处理的点火并使其以初始延迟点火。
-
-