- すべての実装されたインタフェース:
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();
Timers
を構築する際は、遅延パラメータとActionListener
の両方を指定します。 遅延パラメータは、初期遅延と、イベントがトリガーされる間の遅延の両方の設定に使用します。単位はミリ秒です。 タイマーは、開始後、登録されたリスナーに対する最初のActionEvent
がトリガーされるまでの初期遅延を待機します。 この最初のイベントの発生後は、タイマーが停止するまで、イベント間遅延が経過するたびにイベントをトリガーする処理を継続します。
構築後、初期遅延とイベント間遅延は別々に変更できます。新たにActionListeners
を追加することもできます。
タイマーを1回だけトリガーしたあと停止するには、タイマーでsetRepeats(false)
を呼び出します。
すべてのTimer
は、実行する最初のTimer
オブジェクトが作成した単一の共有スレッドを使用して待機処理を実行しますが、Timer
のアクション・イベント・ハンドラは、それとは別のイベント・ディスパッチ・スレッドで実行されます。 そのため、Timer
のアクション・イベント・ハンドラはSwingコンポーネントの操作を安全に実行できます。 ただし、ハンドラは、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」を参照してください。
警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beans
パッケージに追加されました。 XMLEncoder
を参照してください。
- 導入されたバージョン:
- 1.2
- 関連項目:
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)
この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
を停止し、リスナーへのアクション・イベントの送信を停止します。
-
フィールド詳細
-
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)このTimer
にFooListener
として現在登録されているすべてのオブジェクトの配列を返します。FooListener
は、addFooListener
メソッドを使用して登録されます。FooListener.class
などのクラス・リテラルを使用してlistenerType
引数を指定できます。 たとえば、次のコードを使用すると、Timer
インスタンスt
のアクション・リスナーを照会できます。ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));
このようなリスナーがない場合は空の配列を返します。- 型パラメータ:
T
-EventListener
クラスの型がリクエストされています- パラメータ:
listenerType
- 要求されるリスナーの型。次の下位インタフェースを指定:java.util.EventListener
- 戻り値:
- このタイマーに
FooListener
として登録されたすべてのオブジェクトの配列、またはこのようなリスナーが追加されていない場合は空の配列 - 例外:
ClassCastException
-listenerType
で、java.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
の初期遅延を返します。- 戻り値:
Timer
の初期遅延(ミリ秒単位)- 関連項目:
setInitialDelay(int)
,setDelay(int)
-
setRepeats
public void setRepeats(boolean flag)flag
がfalse
の場合、アクション・イベントを1つだけリスナーへ送信するようにTimer
に命令します。- パラメータ:
flag
- 最初のアクション・イベントの送信後、タイマーを停止する場合はfalse
を指定する
-
isRepeats
public boolean isRepeats()Timer
がアクション・イベントをリスナーに複数回送信する場合は、デフォルトのtrue
を返します。- 戻り値:
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
を返します。- 戻り値:
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
を返します。- 戻り値:
Timer
が実行中の場合はtrue、そうでない場合はfalse- 関連項目:
start()
-
stop
public void stop()Timer
を停止し、リスナーへのアクション・イベントの送信を停止します。- 関連項目:
start()
-
restart
public void restart()Timer
を再起動します。このとき、イベントのトリガーが保留中の場合は取り消し、初期遅延を使用してイベントをトリガーします。
-