モジュール java.desktop
パッケージ 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

        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()