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)
|
static void |
invokeLater(Runnable runnable)
|
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 だけがタイムスタンプを持ちますが、将来のバージョンではほかのイベント型にもタイムスタンプが追加される可能性があります。このメソッドはアプリケーションの event dispatching thread からだけ呼び出すようにしてください。ほかのスレッドから呼び出した場合、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, 2013, Oracle and/or its affiliates. All rights reserved.