JavaTM Platform
Standard Ed. 6

javax.swing
クラス Timer

java.lang.Object
  上位を拡張 javax.swing.Timer
すべての実装されたインタフェース:
Serializable

public class Timer
extends Object
implements Serializable

指定された時間の経過後に、一つ以上の 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();

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

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

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

すべての Timer は、実行する最初の Timer オブジェクトが作成した単一の共有スレッドを使用して待機処理を実行しますが、Timer のアクションイベントハンドラは、それとは別のイベントディスパッチスレッドで実行されます。そのため、Timer のアクションイベントハンドラは Swing コンポーネントの操作を安全に実行できます。ただし、一方で Timer のアクションイベントハンドラは、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 に適しています。JDK Version 1.4 以降、すべての JavaBeans の長期間の運用サポートは、java.beans パッケージに追加されています。詳細は、XMLEncoder を参照してください。

関連項目:
java.util.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 の場合、アクションイベントを一つだけリスナーへ送信するように Timer に命令します。
 void start()
          Timer を起動し、リスナーへのアクションイベントの送信を開始します。
 void stop()
          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 以下の場合、タイマーは起動と同時にイベントをトリガーします。listener が null 以外の場合は、タイマーのアクションリスナーとして登録されます。

パラメータ:
delay - 初期遅延とイベント間遅延を表す値 (ミリ秒)
listener - 初期のリスナー。null の場合もあり
関連項目:
addActionListener(java.awt.event.ActionListener), setInitialDelay(int), setRepeats(boolean)
メソッドの詳細

addActionListener

public void addActionListener(ActionListener listener)
アクションリスナーを Timer に追加します。

パラメータ:
listener - 追加するリスナー
関連項目:
Timer(int, java.awt.event.ActionListener)

removeActionListener

public void removeActionListener(ActionListener listener)
指定されたアクションリスナーを 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(Class<T> listenerType)
この TimerFooListener として現在登録されているすべてのオブジェクトの配列を返します。FooListener は、addFooListener メソッドを使用して登録します。

FooListener.class といったクラスリテラルを使用して、listenerType 引数を指定できます。たとえば、アクションリスナーの Timer インスタンス t を照会するには、次のコードを使用します。

ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));
このようなリスナーがない場合は空の配列を返します。

パラメータ:
listenerType - 要求されたリスナーのタイプ。 このパラメータは java.util.EventListener の下位インタフェースを指定する
戻り値:
このタイマーに FooListener として登録されているすべてのオブジェクト の配列。 そのようなリスナーが追加されていない場合は空の配列
例外:
ClassCastException - listenerTypejava.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 の初期遅延を返します。

関連項目:
setInitialDelay(int), setDelay(int)

setRepeats

public void setRepeats(boolean flag)
flagfalse の場合、アクションイベントを一つだけリスナーへ送信するように Timer に命令します。

パラメータ:
flag - 最初のアクションイベントの送信後、タイマーを停止する場合は false を指定する

isRepeats

public boolean isRepeats()
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 を返します。

関連項目:
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 を返します。

関連項目:
start()

stop

public void stop()
Timer を起動し、リスナーへのアクションイベントの送信を停止します。

関連項目:
start()

restart

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


JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。