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以降、すべてのJavaBeans(tm)用の長期間の格納サポートが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()
setDelay(int)
, getInitialDelay()
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, 2014, Oracle and/or its affiliates. All rights reserved.