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
- トリガーするアクションイベントEventListenerList
public <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.EventListener
FooListener
として登録されたすべてのオブジェクトの配列、またはこのようなリスナーが追加されていない場合は空の配列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
- ログを有効にする場合は true
getLogTimers()
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
- 合体をオフにする場合は false
public 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.