モジュール java.desktop
パッケージ java.awt

クラスEventQueue

java.lang.Object
java.awt.EventQueue

public class EventQueue
extends Object
EventQueueは、ベースとなるピア・クラスと信頼できるアプリケーション・クラスの両方からのイベントをキューに入れる、プラットフォームに依存しないクラスです。

キューからイベントを抽出する非同期イベント・ディスパッチ機構をカプセル化し、ディスパッチされるイベントを引数としてEventQueuedispatchEvent(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)
    runnablerunメソッドがthe system EventQueuedispatch threadで呼び出されるようにします。
    static void invokeLater​(Runnable runnable)
    runnablerunメソッドがthe system EventQueuedispatch 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を指定されたものに置き換えます。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • EventQueue

      public EventQueue()
      EventQueueの新しいインスタンスを初期化します。
  • メソッドの詳細

    • postEvent

      public void postEvent​(AWTEvent theEvent)
      1.1形式のイベントをEventQueueに送信します。 同じIDおよびイベント・ソースを持つイベントがキューにある場合は、ソースComponentcoalesceEventsメソッドが呼び出されます。
      パラメータ:
      theEvent - java.awt.AWTEventのインスタンス、またはそのサブクラス
      例外:
      NullPointerException - theEventnullの場合
    • getNextEvent

      public AWTEvent getNextEvent() throws InterruptedException
      EventQueueからイベントを削除し、そのイベントを返します。 このメソッドは、別のスレッドによってイベントが送信されるまでブロックされます。
      戻り値:
      次の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 - eventnullの場合
      導入されたバージョン:
      1.2
    • getMostRecentEventTime

      public static long getMostRecentEventTime()
      タイムスタンプを含み、呼出し元スレッドに関連付けられたEventQueueからディスパッチされた最新のイベントのタイムスタンプを返します。 タイムスタンプを持つイベントがディスパッチ中の場合、そのタイムスタンプが返されます。 イベントがまったくディスパッチされていない場合、EventQueueが初期化された時間が返されます。JDKの現在のバージョンでは、InputEventActionEvent、およびInvocationEventだけがタイムスタンプを持ちますが、将来のバージョンではほかのイベント型にもタイムスタンプが追加される可能性があります。 このメソッドはアプリケーションのイベント・ディスパッチ・スレッドからのみ呼び出すようにしてください。 ほかのスレッドから呼び出した場合、System.currentTimeMillis()でレポートされる現在のシステム時刻が返されます。
      戻り値:
      ディスパッチされる、最後のInputEventActionEvent、または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 - newEventQueuenullの場合
      導入されたバージョン:
      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)
      runnablerunメソッドがthe system EventQueuedispatch threadで呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。
      パラメータ:
      runnable - runメソッドがthe system EventQueueevent dispatch threadで非同期に実行されなければならないRunnable
      導入されたバージョン:
      1.2
      関連項目:
      invokeAndWait(java.lang.Runnable), Toolkit.getSystemEventQueue(), isDispatchThread()
    • invokeAndWait

      public static void invokeAndWait​(Runnable runnable) throws InterruptedException, InvocationTargetException
      runnablerunメソッドがthe system EventQueuedispatch threadで呼び出されるようにします。 待ち状態のすべてのイベントが処理されたあとで実行されます。 呼出しはこれが実行されるまでブロックされます。 このメソッドは、event dispatcher threadから呼び出されるとErrorをスローします。
      パラメータ:
      runnable - runメソッドがthe system EventQueueevent dispatch threadで同期で実行されなければならないRunnable
      例外:
      InterruptedException - いずれかのスレッドがこのスレッドに割り込んだ場合
      InvocationTargetException - runnableの動作中にThrowableがスローされる場合
      導入されたバージョン:
      1.2
      関連項目:
      invokeLater(java.lang.Runnable), Toolkit.getSystemEventQueue(), isDispatchThread()