public class EventQueue extends Object
EventQueueは、基本となるピア・クラスと信頼できるアプリケーション・クラスの両方からのイベントをキューに入れる、プラットフォームに依存しないクラスです。
キューからイベントを抽出する非同期イベント・ディスパッチ機構をカプセル化し、ディスパッチされるイベントを引数としてEventQueueのdispatchEvent(AWTEvent)メソッドを呼び出すことによりディスパッチします。 実際の動作は実装によって異なります。 唯一の要件は、このキュー(EventQueueに送られたイベントは合体できる)に実際に入れられたイベントをディスパッチすることです。
AWTEvent AがAWTEvent Bよりも前にEventQueueに入れられた場合、イベントBをイベントAよりも前にディスパッチすることはできません。
一部のブラウザは、異なるコード・ベースのアプレットを別のコンテキストに分割し、これらのコンテキストの間に壁を構築します。 この場合、各コンテキストごとに1つのEventQueueが存在することになります。 すべてのアプレットを同じコンテキストに置き、1つのグローバルEventQueueですべてのアプレットを動作させるブラウザもあります。 この動作は実装に依存します。 詳細はブラウザのマニュアルを参照してください。
イベント・ディスパッチ機能のスレッド問題については「AWTのスレッドの問題」を参照してください。
| コンストラクタ | 説明 |
|---|---|
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を指定されたものに置き換えます。 |
public void postEvent(AWTEvent theEvent)
EventQueueに送信します。 同じIDおよびイベント・ソースを持つイベントがキューにある場合は、ソースComponentのcoalesceEventsメソッドが呼び出されます。 theEvent - java.awt.AWTEventのインスタンス、またはそのサブクラスNullPointerException - theEventがnullの場合public AWTEvent getNextEvent() throws InterruptedException
EventQueueからイベントを削除し、そのイベントを返します。 このメソッドは、別のスレッドによってイベントが送信されるまでブロックされます。 AWTEventInterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合public AWTEvent peekEvent()
EventQueue上の最初のイベントを削除せずに返します。public AWTEvent peekEvent(int id)
id - 要求するイベント型のIDnullprotected void dispatchEvent(AWTEvent event)
| イベント型 | ソース型 | ディスパッチ方法 |
|---|---|---|
| ActiveEvent | 任意 | event.dispatch() |
| その他 | Component | source.dispatchEvent(AWTEvent) |
| その他 | MenuComponent | source.dispatchEvent(AWTEvent) |
| その他 | その他 | 処理されない(無視される) |
event - java.awt.AWTEventのインスタンス、またはそのサブクラスNullPointerException - eventがnullの場合public static long getMostRecentEventTime()
EventQueueからディスパッチされた最新のイベントのタイムスタンプを返します。 タイムスタンプを持つイベントがディスパッチ中の場合、そのタイムスタンプが返されます。 イベントがまったくディスパッチされていない場合、EventQueueが初期化された時間が返されます。JDKの現在のバージョンでは、InputEvent、ActionEvent、およびInvocationEventだけがタイムスタンプを持ちますが、将来のバージョンではほかのイベント型にもタイムスタンプが追加される可能性があります。 このメソッドはアプリケーションのイベント・ディスパッチ・スレッドからのみ呼び出すようにしてください。 ほかのスレッドから呼び出した場合、System.currentTimeMillis()でレポートされる現在のシステム時刻が返されます。 InputEvent、ActionEvent、またはInvocationEventのタイムスタンプ。このメソッドがイベント・ディスパッチ・スレッド以外のスレッドから呼び出される場合はSystem.currentTimeMillis()InputEvent.getWhen(), ActionEvent.getWhen(), InvocationEvent.getWhen(), isDispatchThread()public static AWTEvent getCurrentEvent()
EventQueueによって現在ディスパッチされているイベントを返します。 メソッドがイベントにアクセスする必要があり、イベントへの参照を引数として受け取るよう設計されていない場合に有効です。 このメソッドはアプリケーションのイベント・ディスパッチ・スレッドからだけ呼び出すようにしてください。 ほかのスレッドから呼び出した場合、nullが返されます。 public void push(EventQueue newEventQueue)
EventQueueを指定されたものに置き換えます。 待ち状態のイベントは、処理のために新しいEventQueueに転送されます。 newEventQueue - 使用されるEventQueueまたはそのサブクラスのインスタンスNullPointerException - newEventQueueがnullの場合pop()protected void pop()
throws EmptyStackException
EventQueueを使用するイベントのディスパッチを停止します。 待ち状態のイベントは、処理のために前のEventQueueに転送されます。
警告: デッドロック回避のため、このメソッドをサブクラスで同期宣言しないようにします。
EmptyStackException - このEventQueueで以前にプッシュが行われていない場合push(java.awt.EventQueue)public SecondaryLoop createSecondaryLoop()
secondary loopを作成します。 イベント・ループの開始と停止を行い、このキューからイベントをディスパッチするには、SecondaryLoop.enter()メソッドとSecondaryLoop.exit()メソッドを使用します。 SecondaryLoop.enter(), SecondaryLoop.exit()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のディスパッチ・スレッドで実行されている場合はtrueinvokeLater(java.lang.Runnable), invokeAndWait(java.lang.Runnable), Toolkit.getSystemEventQueue()public static void invokeLater(Runnable runnable)
runnableのrunメソッドがthe system EventQueueのdispatch threadで呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。 runnable - runメソッドがthe system EventQueueのevent dispatch threadで非同期に実行されなければならないRunnableinvokeAndWait(java.lang.Runnable), Toolkit.getSystemEventQueue(), isDispatchThread()public static void invokeAndWait(Runnable runnable) throws InterruptedException, InvocationTargetException
runnableのrunメソッドがthe system EventQueueのdispatch threadで呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。 呼出しはこれが実行されるまでブロックされます。 このメソッドは、event dispatcher threadから呼び出されるとErrorをスローします。 runnable - runメソッドがthe system EventQueueのevent dispatch threadで同期で実行されなければならないRunnableInterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合InvocationTargetException - runnableの動作中にThrowableがスローされる場合invokeLater(java.lang.Runnable), Toolkit.getSystemEventQueue(), isDispatchThread() バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。