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();
Timers を構築する際は、遅延パラメータと ActionListener の両方を指定します。遅延パラメータは、初期遅延と、イベントがトリガーされるまでの遅延の両方の設定に使用します。単位はミリ秒です。タイマーは、開始後、登録されたリスナーに対する最初の ActionEvent がトリガーされるまでの初期遅延を待機します。この最初のイベントの発生後は、タイマーが停止するまで、イベント間遅延が経過するたびにイベントをトリガーする処理を継続します。
構築後、初期遅延とイベント間遅延は別々に変更できます。新たに ActionListeners を追加することもできます。
タイマーを 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 に適しています。1.4 以降、すべての JavaBeansTM 用の長期間の格納サポートが 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> |
getListeners(Class<T> listenerType)
この
Timer に FooListener として現在登録されているすべてのオブジェクトの配列を返します。 |
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)
flag が false の場合、アクションイベントを 1 つだけリスナーへ送信するように Timer に命令します。 |
void |
start()
Timer を起動し、リスナーへのアクションイベントの送信を開始します。 |
void |
stop()
Timer を停止し、リスナーへのアクションイベントの送信を停止します。 |
protected EventListenerList listenerList
public Timer(int delay,
ActionListener listener)
Timer を作成し、初期遅延とイベント間遅延を delay ミリ秒に初期化します。delay が 0 以下の場合、タイマーは起動と同時にイベントをトリガーします。listener が null 以外の場合は、タイマーのアクションリスナーとして登録されます。delay - 初期遅延とイベント間遅延を表す値 (ミリ秒)listener - 初期のリスナー。null の場合もありaddActionListener(java.awt.event.ActionListener), setInitialDelay(int), setRepeats(boolean)public void addActionListener(ActionListener listener)
Timer にアクションリスナーを追加します。listener - 追加するリスナーTimer(int, java.awt.event.ActionListener)public void removeActionListener(ActionListener listener)
Timer から削除します。listener - 削除するリスナーpublic ActionListener[] getActionListeners()
ActionListener、現在登録されているリスナーがない場合は空の配列addActionListener(java.awt.event.ActionListener), removeActionListener(java.awt.event.ActionListener)protected void fireActionPerformed(ActionEvent e)
e - トリガーするアクションイベントEventListenerListpublic <T extends EventListener> T[] getListeners(Class<T> listenerType)
Timer に FooListener として現在登録されているすべてのオブジェクトの配列を返します。
FooListener は、addFooListener メソッドを使用して登録されます。
FooListener.class などのクラスリテラルを使用して listenerType 引数を指定できます。たとえば、次のコードを使用すると、Timer インスタンス t のアクションリスナーを照会できます。
ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));このようなリスナーがない場合は空の配列を返します。
listenerType - 要求されるリスナーの型。次の下位インタフェースを指定: java.util.EventListenerFooListener として登録されたすべてのオブジェクトの配列、またはこのようなリスナーが追加されていない場合は空の配列ClassCastException - listenerType で、java.util.EventListener を実装するクラスまたはインタフェースが指定されなかった場合getActionListeners(), addActionListener(java.awt.event.ActionListener), removeActionListener(java.awt.event.ActionListener)public static void setLogTimers(boolean flag)
System.out にメッセージが送られます。flag - ログを有効にする場合は truegetLogTimers()public static boolean getLogTimers()
true を返します。true、そうでない場合は falsesetLogTimers(boolean)public void setDelay(int delay)
Timer の遅延時間をミリ秒単位で設定します。これは初期遅延のプロパティーには影響を及ぼしません。初期遅延は setInitialDelay メソッドで設定可能です。delay - 遅延時間 (ミリ秒単位)setInitialDelay(int)public int getDelay()
public void setInitialDelay(int initialDelay)
Timer の初期遅延をミリ秒単位で設定します。初期遅延とは、タイマーが起動したあと、最初のイベントをトリガーするまでの待ち時間のことです。構築時にはイベント間遅延と同じ値が設定されていますが、その後は別々に変更可能です。イベント間遅延が変更されても、初期遅延に影響はありません。initialDelay - 初期遅延 (ミリ秒単位)setDelay(int)public int getInitialDelay()
Timer の初期遅延を返します。public void setRepeats(boolean flag)
flag が false の場合、アクションイベントを 1 つだけリスナーへ送信するように Timer に命令します。flag - 最初のアクションイベントの送信後、タイマーを停止する場合は false を指定するpublic boolean isRepeats()
Timer がアクションイベントをリスナーに複数回送信する場合は、デフォルトの true を返します。setRepeats(boolean)public void setCoalesce(boolean flag)
Timer が保留中の複数の ActionEvent トリガーを合体させるかどうかを設定します。ビジーアプリケーションは Timer のイベント生成に追いつけないことがあるため、結果として複数のアクションイベントがキューに入ります。処理が行われると、アプリケーションはこうしたイベントを次々と送るので、Timer のリスナーは遅延なく一連のイベントを受け取ります。保留中の複数イベントを 1 つのイベントに合体すればこの状況を避けられます。Timer は、そうしたイベントをデフォルトで 1 つに合体します。flag - 合体をオフにする場合は falsepublic boolean isCoalesce()
Timer が保留中の複数のアクションイベントを合体させる場合は true を返します。setCoalesce(boolean)public void setActionCommand(String command)
ActionEvent 内のアクションコマンドとして配信される文字列を設定します。null も設定可能です。command - アクションコマンドpublic String getActionCommand()
ActionEvent 内のアクションコマンドとして配信される文字列を返します。デフォルトの null も設定できます。public void start()
Timer を起動し、リスナーへのアクションイベントの送信を開始します。stop()public boolean isRunning()
Timer が実行中の場合は true を返します。start()public void stop()
Timer を停止し、リスナーへのアクションイベントの送信を停止します。start()public void restart()
Timer を再起動します。このとき、イベントのトリガーが保留中の場合は取り消し、初期遅延を使用してイベントをトリガーします。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.