JavaTM 2 Platform
Standard Ed. 6

java.awt
類別 EventQueue

java.lang.Object
  繼承者 java.awt.EventQueue

public class EventQueue
extends Object

EventQueue 是一個與平臺無關的類別,它將來自於底層同位體類別和受信任的應用程序類別的事件列入佇列。

它封裝了非同步事件指派機制,該機制從佇列中提取事件,然後通過對此 EventQueue 調用 dispatchEvent(AWTEvent) 方法來指派這些事件(事件作為參數被指派)。該機制的特殊行為是與實作有關的。指派實際排入到該佇列中的事件(注意,正在發送到 EventQueue 中的事件可以被合併)的唯一要求是:

按順序指派。
也就是說,不允許同時從該佇列中指派多個事件。
指派順序與它們排隊的順序相同。
也就是說,如果 AWTEvent A 比 AWTEvent B 先排入到 EventQueue 中,那麼事件 B 不能在事件 A 之前被指派。

一些瀏覽器將不同程式碼基中的 applet 分成獨立的上下文,並在這些上下文之間建立一道道牆。在這樣的場景中,每個上下文將會有一個 EventQueue。其他瀏覽器將所有的 applet 放入到同一個上下文中,這意味著所有 applet 只有一個全體 EventQueue。該行為是與實作有關的。有關更多資訊,請參照瀏覽器的文檔。

有關事件指派機制的執行緒問題,請參閱 AWT 執行緒問題

從以下版本開始:
1.1

建構子摘要
EventQueue()
           
 
方法摘要
protected  void dispatchEvent(AWTEvent event)
          指派一個事件。
static AWTEvent getCurrentEvent()
          返回當前正在被 EventQueue(它與正在調用的執行緒相關)指派的事件。
static long getMostRecentEventTime()
          返回最近事件的時間戳(如果有),該事件從 EventQueue(它與正在調用的執行緒相關)進行指派。
 AWTEvent getNextEvent()
          從 EventQueue 中移除一個事件,並返回該事件。
static void invokeAndWait(Runnable runnable)
          導致 runnablerun 方法在 the system EventQueue 的指派執行緒中被調用。
static void invokeLater(Runnable runnable)
          導致 runnablerun 方法在 the system EventQueue 的指派執行緒中被調用。
static boolean isDispatchThread()
          如果正在調用的執行緒是當前 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()
方法詳細資訊

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 的第一個事件,如果沒有這樣的事件,則返回 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 的當前版本中,只有 InputEventActionEventInvocationEvent 有時間戳;但是,JDK 的未來版本可能將時間戳添加到其他事件型別中。注意,該方法只應該從應用程序事件的指派執行緒進行調用。如果從另一個執行緒調用該方法,則返回當前系統的時間(由 System.currentTimeMillis() 報告)。

返回:
最後一次 InputEvent 的時間戳,要指派的 ActionEventInvocationEvent,如果在不同於事件指派執行緒的執行緒上調用該方法,則返回 System.currentTimeMillis()
從以下版本開始:
1.4
另請參見:
InputEvent.getWhen(), ActionEvent.getWhen(), InvocationEvent.getWhen()

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 以備處理。

警告:為了避免死鎖,不要在子類別中將該方法宣告為 synchronized。

拋出:
EmptyStackException - 如果以前沒有對該 EventQueue 執行 push 操作
從以下版本開始:
1.2
另請參見:
push(java.awt.EventQueue)

isDispatchThread

public static boolean isDispatchThread()
如果正在調用的執行緒是當前 AWT EventQueue 的指派執行緒,則返回 true。使用此調用確保給定的任務正在當前 AWT EventDispatchThread 上執行(或沒有執行)。

返回:
如果給定的任務正在當前 AWT EventQueue 的指派執行緒上運行,則返回 true。
從以下版本開始:
1.2

invokeLater

public static void invokeLater(Runnable runnable)
導致 runnablerun 方法在 the system EventQueue 的指派執行緒中被調用。

參數:
runnable - Runnable 物件,其 run 方法應該在 EventQueue 上同步執行
從以下版本開始:
1.2
另請參見:
invokeAndWait(java.lang.Runnable)

invokeAndWait

public static void invokeAndWait(Runnable runnable)
                          throws InterruptedException,
                                 InvocationTargetException
導致 runnablerun 方法在 the system EventQueue 的指派執行緒中被調用。在所有掛起事件被處理後才發生。在這發生之前調用被阻塞。如果從事件指派執行緒進行調用,則該方法將拋出 Error。

參數:
runnable - Runnable 物件,其 run 方法應該在 EventQueue 上同步執行
拋出:
InterruptedException - 如果任何執行緒中斷了該執行緒
InvocationTargetException - 如果運行 runnable 時拋出一個 throwable
從以下版本開始:
1.2
另請參見:
invokeLater(java.lang.Runnable)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only