java.lang.Object
java.awt.EventQueue
public class EventQueue extends Object
EventQueue
は、ベースとなるピア・クラスと信頼できるアプリケーション・クラスの両方からのイベントをキューに入れる、プラットフォームに依存しないクラスです。
キューからイベントを抽出する非同期イベント・ディスパッチ機構をカプセル化し、ディスパッチされるイベントを引数としてEventQueue
のdispatchEvent(AWTEvent)
メソッドを呼び出すことによりディスパッチします。 実際の動作は実装によって異なります。 唯一の要件は、このキュー(EventQueue
に送られたイベントは合体できる)に実際に入れられたイベントをディスパッチすることです。
- 順次
- これが指定されている場合、このキューの複数イベントの同時ディスパッチは許可されません。
- キューに入れられた順序
-
AWTEvent
AがAWTEvent
Bよりも前にEventQueue
に入れられた場合、イベントBをイベントAよりも前にディスパッチすることはできません。
一部のブラウザは、異なるコード・ベースのアプレットを別のコンテキストに分割し、これらのコンテキストの間に壁を構築します。 この場合、各コンテキストごとに1つのEventQueue
が存在することになります。 すべてのアプレットを同じコンテキストに置き、1つのグローバルEventQueue
ですべてのアプレットを動作させるブラウザもあります。 この動作は実装に依存します。 詳細はブラウザのマニュアルを参照してください。
イベント・ディスパッチ機能のスレッド問題については「AWTのスレッドの問題」を参照してください。
- 導入されたバージョン:
- 1.1
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 EventQueue()
EventQueue
の新しいインスタンスを初期化します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 SecondaryLoop
createSecondaryLoop()
このイベント・キューに関連付けられた新しいsecondary loop
を作成します。protected void
dispatchEvent(AWTEvent event)
イベントをディスパッチします。static AWTEvent
getCurrentEvent()
呼び出しスレッドに関連付けられたEventQueue
によって現在ディスパッチされているイベントを返します。static long
getMostRecentEventTime()
タイムスタンプを含み、呼出し元スレッドに関連付けられたEventQueue
からディスパッチされた最新のイベントのタイムスタンプを返します。AWTEvent
getNextEvent()
EventQueue
からイベントを削除し、そのイベントを返します。static void
invokeAndWait(Runnable runnable)
runnable
のrun
メソッドがthe system EventQueue
のdispatch thread
で呼び出されるようにします。static void
invokeLater(Runnable runnable)
runnable
のrun
メソッドがthe system EventQueue
のdispatch thread
で呼び出されるようにします。static boolean
isDispatchThread()
呼出し元スレッドがthe current AWT EventQueue
のディスパッチ・スレッドである場合はtrueを返します。AWTEvent
peekEvent()
EventQueue
上の最初のイベントを削除せずに返します。AWTEvent
peekEvent(int id)
指定されたIDを持つイベントがある場合、その中の最初のイベントを返します。protected void
pop()
このEventQueue
を使用するイベントのディスパッチを停止します。void
postEvent(AWTEvent theEvent)
1.1形式のイベントをEventQueue
に送信します。void
push(EventQueue newEventQueue)
既存のEventQueue
を指定されたものに置き換えます。
-
コンストラクタの詳細
-
EventQueue
public EventQueue()EventQueue
の新しいインスタンスを初期化します。
-
-
メソッドの詳細
-
postEvent
public void postEvent(AWTEvent theEvent)1.1形式のイベントをEventQueue
に送信します。 同じIDおよびイベント・ソースを持つイベントがキューにある場合は、ソースComponent
のcoalesceEvents
メソッドが呼び出されます。- パラメータ:
theEvent
-java.awt.AWTEvent
のインスタンス、またはそのサブクラス- 例外:
NullPointerException
-theEvent
がnull
の場合
-
getNextEvent
public AWTEvent getNextEvent() throws InterruptedExceptionEventQueue
からイベントを削除し、そのイベントを返します。 このメソッドは、別のスレッドによってイベントが送信されるまでブロックされます。- 戻り値:
- 次の
AWTEvent
- 例外:
InterruptedException
- いずれかのスレッドがこのスレッドに割り込んだ場合
-
peekEvent
public AWTEvent peekEvent()EventQueue
上の最初のイベントを削除せずに返します。- 戻り値:
- 最初のイベント
-
peekEvent
public AWTEvent peekEvent(int id)指定されたIDを持つイベントがある場合、その中の最初のイベントを返します。- パラメータ:
id
- 要求するイベント型のID- 戻り値:
- 指定されたIDを持つ最初のイベント。このIDを持つイベントが存在しない場合は
null
-
dispatchEvent
protected void dispatchEvent(AWTEvent event)イベントをディスパッチします。 ディスパッチ方法は、イベントの型およびイベントのソース・オブジェクトの型によって異なります。イベント型、ソース型、ディスパッチ方法 イベント・タイプ ソース・タイプ ディスパッチ方法 ActiveEvent 任意 event.dispatch() その他 Component source.dispatchEvent(AWTEvent) その他 MenuComponent source.dispatchEvent(AWTEvent) その他 その他 処理されない(無視される) - パラメータ:
event
-java.awt.AWTEvent
のインスタンス、またはそのサブクラス- 例外:
NullPointerException
-event
がnull
の場合- 導入されたバージョン:
- 1.2
-
getMostRecentEventTime
public static long getMostRecentEventTime()タイムスタンプを含み、呼出し元スレッドに関連付けられたEventQueue
からディスパッチされた最新のイベントのタイムスタンプを返します。 タイムスタンプを持つイベントがディスパッチ中の場合、そのタイムスタンプが返されます。 イベントがまったくディスパッチされていない場合、EventQueueが初期化された時間が返されます。JDKの現在のバージョンでは、InputEvent
、ActionEvent
、およびInvocationEvent
だけがタイムスタンプを持ちますが、将来のバージョンではほかのイベント型にもタイムスタンプが追加される可能性があります。 このメソッドはアプリケーションのイベント・ディスパッチ・スレッド
からのみ呼び出すようにしてください。 ほかのスレッドから呼び出した場合、System.currentTimeMillis()
でレポートされる現在のシステム時刻が返されます。- 戻り値:
- ディスパッチされる、最後の
InputEvent
、ActionEvent
、またはInvocationEvent
のタイムスタンプ。このメソッドがイベント・ディスパッチ・スレッド以外のスレッドから呼び出される場合はSystem.currentTimeMillis()
- 導入されたバージョン:
- 1.4
- 関連項目:
InputEvent.getWhen()
,ActionEvent.getWhen()
,InvocationEvent.getWhen()
,isDispatchThread()
-
getCurrentEvent
public static AWTEvent getCurrentEvent()呼び出しスレッドに関連付けられたEventQueue
によって現在ディスパッチされているイベントを返します。 メソッドがイベントにアクセスする必要があり、イベントへの参照を引数として受け取るよう設計されていない場合に有効です。 このメソッドはアプリケーションのイベント・ディスパッチ・スレッドからだけ呼び出すようにしてください。 ほかのスレッドから呼び出した場合、nullが返されます。- 戻り値:
- 現在ディスパッチされているイベント。このメソッドがイベント・ディスパッチ・スレッド以外のスレッドから呼び出されている場合はnull
- 導入されたバージョン:
- 1.4
-
push
public void push(EventQueue newEventQueue)既存のEventQueue
を指定されたものに置き換えます。 待ち状態のイベントは、処理のために新しいEventQueue
に転送されます。- パラメータ:
newEventQueue
- 使用されるEventQueue
またはそのサブクラスのインスタンス- 例外:
NullPointerException
-newEventQueue
がnull
の場合- 導入されたバージョン:
- 1.2
- 関連項目:
pop()
-
pop
protected void pop() throws EmptyStackExceptionこのEventQueue
を使用するイベントのディスパッチを停止します。 待ち状態のイベントは、処理のために前のEventQueue
に転送されます。警告: デッドロック回避のため、このメソッドをサブクラスで同期宣言しないようにします。
- 例外:
EmptyStackException
- このEventQueue
で以前にプッシュが行われていない場合- 導入されたバージョン:
- 1.2
- 関連項目:
push(java.awt.EventQueue)
-
createSecondaryLoop
public SecondaryLoop createSecondaryLoop()このイベント・キューに関連付けられた新しいsecondary loop
を作成します。 イベント・ループの開始と停止を行い、このキューからイベントをディスパッチするには、SecondaryLoop.enter()
メソッドとSecondaryLoop.exit()
メソッドを使用します。- 戻り値:
- 新しいセカンダリ・ループ・オブジェクトsecondaryLoop。ネストされた新しいイベント・ループを起動し、このキューからイベントをディスパッチするために使用できる
- 導入されたバージョン:
- 1.7
- 関連項目:
SecondaryLoop.enter()
,SecondaryLoop.exit()
-
isDispatchThread
public static boolean isDispatchThread()呼出し元スレッドがthe current AWT EventQueue
のディスパッチ・スレッドである場合はtrueを返します。 特定のタスクが実行されている(または実行されていない)ことを確認するには、このメソッドを使用します。ノート:
the current AWT EventQueue
のディスパッチ・スレッドでタスクを実行するには、invokeLater(java.lang.Runnable)
メソッドまたはinvokeAndWait(java.lang.Runnable)
メソッドを使用します。- 戻り値:
the current AWT EventQueue
のディスパッチ・スレッドで実行されている場合はtrue- 導入されたバージョン:
- 1.2
- 関連項目:
invokeLater(java.lang.Runnable)
,invokeAndWait(java.lang.Runnable)
,Toolkit.getSystemEventQueue()
-
invokeLater
public static void invokeLater(Runnable runnable)runnable
のrun
メソッドがthe system EventQueue
のdispatch thread
で呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。- パラメータ:
runnable
-run
メソッドがthe system EventQueue
のevent dispatch thread
で非同期に実行されなければならないRunnable
- 導入されたバージョン:
- 1.2
- 関連項目:
invokeAndWait(java.lang.Runnable)
,Toolkit.getSystemEventQueue()
,isDispatchThread()
-
invokeAndWait
public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetExceptionrunnable
のrun
メソッドがthe system EventQueue
のdispatch thread
で呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。 呼出しはこれが実行されるまでブロックされます。 このメソッドは、event dispatcher thread
から呼び出されるとErrorをスローします。- パラメータ:
runnable
-run
メソッドがthe system EventQueue
のevent dispatch thread
で同期で実行されなければならないRunnable
- 例外:
InterruptedException
- いずれかのスレッドがこのスレッドに割り込んだ場合InvocationTargetException
-runnable
の動作中にThrowableがスローされる場合- 導入されたバージョン:
- 1.2
- 関連項目:
invokeLater(java.lang.Runnable)
,Toolkit.getSystemEventQueue()
,isDispatchThread()
-