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
からイベントを削除し、そのイベントを返します。このメソッドは、別のスレッドによってイベントが送信されるまでブロックされます。AWTEvent
InterruptedException
- いずれかのスレッドがこのスレッドに割り込んだ場合public AWTEvent peekEvent()
EventQueue
上の最初のイベントを削除せずに返します。public AWTEvent peekEvent(int id)
id
- 要求するイベント型の IDnull
protected 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
で非同期に実行されなければならない Runnable
invokeAndWait(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
で同期で実行されなければならない Runnable
InterruptedException
- いずれかのスレッドがこのスレッドに割り込んだ場合InvocationTargetException
- runnable
の動作中に Throwable がスローされる場合invokeLater(java.lang.Runnable)
, Toolkit.getSystemEventQueue()
, isDispatchThread()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.