- 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)。虽然所有
TimerS使用单个,共享线程(由第一创建的执行它们的等待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 EventListenerListlistenerList已注册听众的集合
-
构造方法摘要
构造方法 构造器 描述 Timer(int delay, ActionListener listener)创建一个Timer并将初始延迟和事件间延迟初始化为delay毫秒。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 voidaddActionListener(ActionListener listener)向Timer添加动作侦听Timer。protected voidfireActionPerformed(ActionEvent e)通知所有已注册对此事件类型的通知感兴趣的听众。StringgetActionCommand()返回将作为此计时器触发的ActionEvent的操作命令传递的字符串。ActionListener[]getActionListeners()返回在此计时器上注册的所有动作侦听器的数组。intgetDelay()返回动作事件触发之间的延迟(以毫秒为单位)。intgetInitialDelay()返回Timer的初始延迟。<T extends EventListener>
T[]getListeners(类<T> listenerType)返回当前注册的所有对象的数组FooListener在这个STimer。static booleangetLogTimers()如果启用了日志记录,则返回true。booleanisCoalesce()如果Timer合并多个待处理操作事件,则返回true。booleanisRepeats()如果Timer将多次向其侦听器发送操作事件,则返回true(默认值)。booleanisRunning()如果Timer正在运行,则返回true。voidremoveActionListener(ActionListener listener)从Timer删除指定的动作侦听Timer。voidrestart()重新启动Timer,取消任何待处理的点火并使其以初始延迟点火。voidsetActionCommand(String command)设置将作为此计时器触发的ActionEvent的操作命令传递的字符串。voidsetCoalesce(boolean flag)设置Timer是否合并多个挂起的ActionEvent发射。voidsetDelay(int delay)设置Timer的事件间延迟,即连续动作事件之间的毫秒数。voidsetInitialDelay(int initialDelay)设置Timer的初始延迟,即在触发第一个事件之前计时器启动后等待的时间(以毫秒为单位)。static voidsetLogTimers(boolean flag)启用或禁用计时器日志。voidsetRepeats(boolean flag)如果flag是false,则指示Timer仅向其侦听器发送一个操作事件。voidstart()启动Timer,使其开始向其侦听器发送动作事件。voidstop()停止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。FooListeners使用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将多次向其侦听器发送动作事件,Timertrue - 另请参见:
-
setRepeats(boolean)
-
setCoalesce
public void setCoalesce(boolean flag)
设置Timer是否合并多个待处理的ActionEvent点火。 繁忙的应用程序可能无法跟上Timer的事件生成,导致多个操作事件排队。 处理后,应用程序一个接一个地发送这些事件,导致Timer的侦听器接收到一系列事件,它们之间没有延迟。 合并通过将多个待处理事件减少到单个事件来避免这种情况。Timers默认情况下合并事件。- 参数
-
flag- 指定false以关闭合并
-
isCoalesce
public boolean isCoalesce()
如果Timer合并多个待处理操作事件,则返回true。- 结果
-
如果
Timer合并多个待处理操作事件,Timertrue - 另请参见:
-
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正在运行,Timertrue,否则为false - 另请参见:
-
start()
-
stop
public void stop()
停止Timer,使其停止向其侦听器发送操作事件。- 另请参见:
-
start()
-
restart
public void restart()
重新启动Timer,取消任何待处理的点火并使其以初始延迟点火。
-
-