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

クラスTimer

java.lang.Object
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」を参照してください。

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

導入されたバージョン:
1.2
関連項目:
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    登録済みリスナーのコレクションです。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    Timer(int delay, ActionListener listener)
    Timerを作成し、初期遅延とイベント間遅延をdelayミリ秒に初期化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    Timerにアクション・リスナーを追加します。
    protected void
    このイベント・タイプの通知対象として登録されているすべてのリスナーに通知します。
    このタイマーによってトリガーされたActionEvent内のアクション・コマンドとして配信される文字列を返します。
    このタイマーに登録されたすべてのアクション・リスナーの配列を返します。
    int
    次のアクション・イベントがトリガーされるまでの遅延時間(ミリ秒単位)を返します。
    int
    Timerの初期遅延を返します。
    <T extends EventListener>
    T[]
    getListeners(Class<T> listenerType)
    このTimerFooListenerとして現在登録されているすべてのオブジェクトの配列を返します。
    static boolean
    ロギングが有効な場合にtrueを返します。
    boolean
    Timerが保留中の複数のアクション・イベントを合体させる場合はtrueを返します。
    boolean
    Timerがアクション・イベントをリスナーに複数回送信する場合は、デフォルトのtrueを返します。
    boolean
    Timerが実行中の場合はtrueを返します。
    void
    指定されたアクション・リスナーをTimerから削除します。
    void
    Timerを再起動します。このとき、イベントのトリガーが保留中の場合は取り消し、初期遅延を使用してイベントをトリガーします。
    void
    このタイマーによってトリガーされた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
    Timerを起動し、リスナーへのアクション・イベントの送信を開始します。
    void
    Timerを停止し、リスナーへのアクション・イベントの送信を停止します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

    • listenerList

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

    • Timer

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

    • addActionListener

      public void addActionListener(ActionListener listener)
      Timerにアクション・リスナーを追加します。
      パラメータ:
      listener - 追加するリスナー
      関連項目:
    • removeActionListener

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

      public ActionListener[] getActionListeners()
      このタイマーに登録されたすべてのアクション・リスナーの配列を返します。
      戻り値:
      タイマーのすべてのActionListener、現在登録されているリスナーがない場合は空の配列
      導入されたバージョン:
      1.4
      関連項目:
    • fireActionPerformed

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

      public static void setLogTimers(boolean flag)
      タイマーのログを有効または無効にします。 有効にすると、タイマーが切れたときにSystem.outにメッセージが送られます。
      パラメータ:
      flag - ログを有効にする場合はtrue
      関連項目:
    • getLogTimers

      public static boolean getLogTimers()
      ロギングが有効な場合にtrueを返します。
      戻り値:
      ロギングが有効な場合はtrue、そうでない場合はfalse
      関連項目:
    • setDelay

      public void setDelay(int delay)
      連続するアクション・イベントのイベント間のTimerの遅延時間をミリ秒単位で設定します。 これは初期遅延のプロパティには影響を及ぼしません。初期遅延のプロパティはsetInitialDelayメソッドで設定可能です。
      パラメータ:
      delay - 遅延時間(ミリ秒単位)
      関連項目:
    • getDelay

      public int getDelay()
      次のアクション・イベントがトリガーされるまでの遅延時間(ミリ秒単位)を返します。
      戻り値:
      アクション・イベントの発生間隔(ミリ秒単位)
      関連項目:
    • setInitialDelay

      public void setInitialDelay(int initialDelay)
      Timerの初期遅延をミリ秒単位で設定します。初期遅延とは、タイマーが起動したあと、最初のイベントをトリガーするまでの待ち時間のことです。 構築時にはイベント間遅延と同じ値が設定されていますが、その後は別々に変更可能です。イベント間遅延が変更されても、初期遅延に影響はありません。
      パラメータ:
      initialDelay - 初期遅延(ミリ秒単位)
      関連項目:
    • getInitialDelay

      public int getInitialDelay()
      Timerの初期遅延を返します。
      戻り値:
      Timerの初期遅延(ミリ秒単位)
      関連項目:
    • setRepeats

      public void setRepeats(boolean flag)
      flagfalseの場合、アクション・イベントを1つだけリスナーへ送信するようにTimerに命令します。
      パラメータ:
      flag - 最初のアクション・イベントの送信後、タイマーを停止する場合はfalseを指定する
    • isRepeats

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

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

      public boolean isCoalesce()
      Timerが保留中の複数のアクション・イベントを合体させる場合はtrueを返します。
      戻り値:
      Timerが複数の保留中のアクション・イベントを結合する場合はtrue
      関連項目:
    • setActionCommand

      public void setActionCommand(String command)
      このタイマーによってトリガーされたActionEvent内のアクション・コマンドとして配信される文字列を設定します。nullも設定可能です。
      パラメータ:
      command - アクション・コマンド
      導入されたバージョン:
      1.6
    • getActionCommand

      public String getActionCommand()
      このタイマーによってトリガーされたActionEvent内のアクション・コマンドとして配信される文字列を返します。 デフォルトのnullも設定できます。
      戻り値:
      イベントのトリガーに使用するアクション・コマンド
      導入されたバージョン:
      1.6
    • start

      public void start()
      Timerを起動し、リスナーへのアクション・イベントの送信を開始します。
      関連項目:
    • isRunning

      public boolean isRunning()
      Timerが実行中の場合はtrueを返します。
      戻り値:
      Timerが実行中の場合はtrue、そうでない場合はfalse
      関連項目:
    • stop

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

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