JavaTM 2 Platform
Standard Ed. 5.0

javax.swing
クラス Timer

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

public class Timer
extends Object
implements Serializable

1 つ以上のアクションイベントを、指定された遅延時間の経過後にトリガします。たとえば、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 は、1 つ以上のアクションリスナーと、delay (アクションイベント間の時間) を持ちます。ミリ秒単位で指定された delay の時間が経過すると、Timer はリスナーに対してアクションイベントをトリガします。デフォルトでは、このサイクルは stop メソッドが呼び出されるまで繰り返されます。タイマーのトリガを 1 回だけにするには、タイマーで setRepeats(false) を呼び出します。最初のアクションイベントがトリガされるまでの遅延時間をアクションイベント間の遅延時間とは異なる時間に設定するには、setInitialDelay メソッドを使用します。

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

v 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 バージョン 1.4 以降、すべての JavaBeans の長期間の運用サポートは、java.beans パッケージに追加されています。詳細は、XMLEncoder を参照してください。

関連項目:
java.util.Timer

フィールドの概要
protected  EventListenerList listenerList
           
 
コンストラクタの概要
Timer(int delay, ActionListener listener)
          ミリ秒単位の delay ごとにリスナーへ通知する Timer を生成します。
 
メソッドの概要
 void addActionListener(ActionListener listener)
          アクションリスナーを Timer に追加します。
protected  void fireActionPerformed(ActionEvent e)
          通知の配信対象を、指定されたイベント型で登録したすべてのリスナーに通知します。
 ActionListener[] getActionListeners()
          タイマーに登録されたすべてのアクションリスナーの配列を返します。
 int getDelay()
          アクションイベントのトリガ間の遅延時間 (ミリ秒単位) を返します。
 int getInitialDelay()
          Timer の初期遅延を返します。
<T extends EventListener>
T[]
getListeners(Class<T> listenerType)
          FooListener として現在 Timer に登録されているすべてのオブジェクトの配列を返します。
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 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 を停止し、リスナーへのアクションイベントの送信を停止します。
 
クラス 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)
ミリ秒単位の delay ごとにリスナーへ通知する Timer を生成します。delay が 0 以下の場合、タイマーは起動と同時にトリガします。listenernull 以外の場合は、タイマーのアクションリスナーとして登録されます。

パラメータ:
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)
FooListener として現在 Timer に登録されているすべてのオブジェクトの配列を返します。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 遅延時間をミリ秒単位で設定します。

パラメータ:
delay - 遅延時間 (ミリ秒単位)
関連項目:
setInitialDelay(int)

getDelay

public int getDelay()
アクションイベントのトリガ間の遅延時間 (ミリ秒単位) を返します。

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

setInitialDelay

public void setInitialDelay(int initialDelay)
Timer の初期遅延を設定します。デフォルトでは、イベント間の遅延時間と同じ値です。この値は、最初のアクションイベントだけに使用されます。2 番目以降のアクションイベントには delay プロパティが使用されます。

パラメータ:
initialDelay - start メソッドの呼び出しから、タイマーがトリガする最初のアクションイベントまでの遅延時間 (ミリ秒単位)
関連項目:
setDelay(int)

getInitialDelay

public int getInitialDelay()
Timer の初期遅延を返します。

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

setRepeats

public void setRepeats(boolean flag)
flagfalse の場合、アクションイベントを 1 つだけリスナーへ送信するよう 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)

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 2 Platform
Standard Ed. 5.0

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

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