模块  java.desktop
软件包  javax.swing

Class 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软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    TimerSerialized Form
    • 构造方法摘要

      构造方法  
      构造器 描述
      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在这个S Timer
      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)
      如果 flagfalse ,则指示 Timer仅向其侦听器发送一个操作事件。
      void start()
      启动 Timer ,使其开始向其侦听器发送动作事件。
      void stop()
      停止 Timer ,使其停止向其侦听器发送动作事件。
    • 字段详细信息

    • 构造方法详细信息

    • 方法详细信息

      • removeActionListener

        public void removeActionListener​(ActionListener listener)
        Timer删除指定的动作侦听 Timer
        参数
        listener - 要删除的侦听器
      • fireActionPerformed

        protected void fireActionPerformed​(ActionEvent e)
        通知所有已注册对此事件类型的通知感兴趣的听众。
        参数
        e - 要触发的动作事件
        另请参见:
        EventListenerList
      • getListeners

        public <T extends EventListener> T[] getListeners​(<T> listenerType)
        返回当前注册的所有对象的数组FooListener在这个S Timer 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)
        如果 flagfalse ,则指示 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 ,取消任何待处理的点火并使其以初始延迟点火。