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