モジュール java.desktop
パッケージ javax.swing

クラスTimer

  • すべての実装されたインタフェース:
    Serializable

    public class Timer
    extends Object
    implements Serializable
    指定された間隔で、1つ以上のActionEventをトリガーします。 たとえば、アニメーション・オブジェクトは、フレームを描画するトリガーとしてTimerを使用します。

    タイマーの設定には、Timerオブジェクトの生成、オブジェクトへの1つ以上のアクション・リスナーの登録、およびstartメソッドを使用したタイマーの起動が含まれます。 たとえば、次に示すコードでは、Timerコンストラクタへの最初の引数によって指定されたように、アクション・イベントが1秒間に1回生成されて起動されます。 Timerコンストラクタへの2番目の引数では、タイマーのアクション・イベントを受信するリスナーを指定しています。

      int delay = 1000; //milliseconds
      ActionListener taskPerformer = new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
              //...Perform a task...
          }
      };
      new Timer(delay, taskPerformer).start();

    Timersを構築する際は、遅延パラメータとActionListenerの両方を指定します。 遅延パラメータは、初期遅延と、イベントがトリガーされる間の遅延の両方の設定に使用します。単位はミリ秒です。 タイマーは、開始後、登録されたリスナーに対する最初のActionEventがトリガーされるまでの初期遅延を待機します。 この最初のイベントの発生後は、タイマーが停止するまで、イベント間遅延が経過するたびにイベントをトリガーする処理を継続します。

    構築後、初期遅延とイベント間遅延は別々に変更できます。新たにActionListenersを追加することもできます。

    タイマーを1回だけトリガーしたあと停止するには、タイマーでsetRepeats(false)を呼び出します。

    すべてのTimerは、実行する最初のTimerオブジェクトが作成した単一の共有スレッドを使用して待機処理を実行しますが、Timerのアクション・イベント・ハンドラは、それとは別のイベント・ディスパッチ・スレッドで実行されます。 そのため、Timerのアクション・イベント・ハンドラはSwingコンポーネントの操作を安全に実行できます。 ただし、ハンドラは、GUIの応答を維持できるよう、迅速に動作する必要があります。

    バージョン1.3では、新しいTimerクラスjava.util.TimerがJavaプラットフォームに追加されています。 このクラスとjavax.swing.Timerの基本的な機能は同じですが、java.util.Timerはより汎用的でより多くの機能を持っています。 javax.swing.Timerには、GUIでの使用を容易にする2つの特徴があります。 1番目は、イベント処理メタファがGUIプログラマになじみのあるもので、イベント・ディスパッチ・スレッドの扱いが簡単になっていることです。 2番目は、自動共有スレッドにより、生成するスレッドの数が多大になるのを回避するための特別な手順が不要になることです。 ただし、タイマーは、カーソルの点滅やツールヒントの表示などと同じスレッドを使用します。

    タイマーの詳細と使用例については、『The Java Tutorial』の「How to Use Timers」を参照してください。 このTimerクラスとjava.util.Timerの選択基準や使用例については、『The Swing Connection』の「Using Timers in Swing Applications」を参照してください。

    警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースとの互換性がなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。

    導入されたバージョン:
    1.2
    関連項目:
    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の初期遅延を返します。
      <T extends EventListener>
      T[]
      getListeners​(Class<T> listenerType)
      このTimerFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。
      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)
      flagfalseの場合、アクション・イベントを1つだけリスナーへ送信するようにTimerに命令します。
      void start()
      Timerを起動し、リスナーへのアクション・イベントの送信を開始します。
      void stop()
      Timerを停止し、リスナーへのアクション・イベントの送信を停止します。
    • フィールドの詳細

      • listenerList

        protected EventListenerList listenerList
        登録済みリスナーのコレクションです。
    • コンストラクタの詳細

      • Timer

        public Timer​(int delay,
                     ActionListener listener)
        Timerを作成し、初期遅延とイベント間遅延をdelayミリ秒に初期化します。 delayが0以下の場合、タイマーは起動と同時にイベントをトリガーします。 listenernull以外の場合は、タイマーのアクション・リスナーとして登録されます。
        パラメータ:
        delay - 初期遅延とイベント間遅延を表す値(ミリ秒)
        listener - 初期のリスナー。nullの場合もあり
        関連項目:
        addActionListener(java.awt.event.ActionListener), setInitialDelay(int), setRepeats(boolean)
    • メソッドの詳細

      • removeActionListener

        public void removeActionListener​(ActionListener listener)
        指定されたアクション・リスナーをTimerから削除します。
        パラメータ:
        listener - 削除するリスナー
      • fireActionPerformed

        protected void fireActionPerformed​(ActionEvent e)
        このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。
        パラメータ:
        e - トリガーするアクション・イベント
        関連項目:
        EventListenerList
      • getListeners

        public <T extends EventListener> T[] getListeners​(Class<T> listenerType)
        このTimerFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。 FooListenerは、addFooListenerメソッドを使用して登録されます。

        FooListener.classなどのクラス・リテラルを使用してlistenerType引数を指定できます。 たとえば、次のコードを使用すると、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、そうでない場合はfalse
        関連項目:
        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の場合、アクション・イベントを1つだけリスナーへ送信するようにTimerに命令します。
        パラメータ:
        flag - 最初のアクション・イベントの送信後、タイマーを停止する場合はfalseを指定する
      • isRepeats

        public boolean isRepeats()
        Timerがアクション・イベントをリスナーに複数回送信する場合は、デフォルトのtrueを返します。
        戻り値:
        Timerがアクション・イベントをそのリスナーに複数回送信する場合はtrue
        関連項目:
        setRepeats(boolean)
      • setCoalesce

        public void setCoalesce​(boolean flag)
        Timerが保留中の複数のActionEventトリガーを合体させるかどうかを設定します。 ビジー・アプリケーションはTimerのイベント生成に追いつけないことがあるため、結果として複数のアクション・イベントがキューに入ります。 処理が行われると、アプリケーションはこうしたイベントを次々と送るので、Timerのリスナーは遅延なく一連のイベントを受け取ります。 保留中の複数イベントを1つのイベントに合体すればこの状況を避けられます。 Timerは、そうしたイベントをデフォルトで1つに合体します。
        パラメータ:
        flag - 合体をオフにする場合はfalse
      • isCoalesce

        public boolean isCoalesce()
        Timerが保留中の複数のアクション・イベントを合体させる場合はtrueを返します。
        戻り値:
        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が実行中の場合はtrue、そうでない場合はfalse
        関連項目:
        start()
      • stop

        public void stop()
        Timerを停止し、リスナーへのアクション・イベントの送信を停止します。
        関連項目:
        start()
      • restart

        public void restart()
        Timerを再起動します。このとき、イベントのトリガーが保留中の場合は取り消し、初期遅延を使用してイベントをトリガーします。