|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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 Threading Issues。
- 从以下版本开始:
- 1.1
构造方法摘要 | |
---|---|
EventQueue() |
方法摘要 | |
---|---|
protected void |
dispatchEvent(AWTEvent event) 指派一个事件。 |
static AWTEvent |
getCurrentEvent() 返回当前正在被 EventQueue (它与正在调用的线程相关)指派的事件。 |
static long |
getMostRecentEventTime() 返回最近事件的时间戳(如果有),该事件从 EventQueue (它与正在调用的线程相关)进行指派。 |
AWTEvent |
getNextEvent() 从 EventQueue 移除一个事件,并返回它。 |
static void |
invokeAndWait(Runnable runnable) 导致 runnable 的 run 方法在 EventQueue 的指派线程上被调用。 |
static void |
invokeLater(Runnable runnable) 导致 runnable 的 run 方法在 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 和事件源的事件,则调用源Component
的coalesceEvents
方法。 -
- 参数:
-
theEvent,
- 的一个实例,或它的一个子例java.awt.AWTEvent
- 抛出:
-
NullPointerException
- 如果theEvent
为null
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
- 如果event
为null
getMostRecentEventTime
public static long getMostRecentEventTime()
-
返回最近事件的时间戳(如果有),该事件从
EventQueue
(它与正在调用的线程相关)进行指派。如果具有时间戳的事件当前正在被指派,则返回它的时间戳。如果还没有事件被指派,则返回 EventQueue 的初始化时间。在 JDK 的当前版本中,只有InputEvent
、ActionEvent
和InvocationEvent
有时间戳;但是,JDK 的未来版本可能将时间戳添加到其他事件类型中。注意,该方法只应该从应用程序事件的指派线程进行调用。如果该方法从另一个线程进行调用,则返回当前系统的时间(由System.currentTimeMillis()
报告)。 -
- 返回:
-
最后一次
InputEvent
的时间戳,要指派的ActionEvent
或InvocationEvent
,如果该方法在不同于事件指派线程的线程上调用,则返回System.currentTimeMillis()
- 从以下版本开始:
- 1.4
- 另请参见:
-
InputEvent.getWhen()
,ActionEvent.getWhen()
,InvocationEvent.getWhen()
getCurrentEvent
public static AWTEvent getCurrentEvent()
-
返回当前正在被
EventQueue
(它与正在调用的线程相关)指派的事件。只有方法需要访问事件时,该方法才有用,但是该方法并不接受对参数的引用。注意,该方法只应该从应用程序的事件指派线程进行调用。如果从另一个线程调用该方法,则返回 null。 -
- 返回:
- 当前正在被指派的事件;如果在线程上调用而不是在指派线程的事件上调用,则返回 null
- 从以下版本开始:
- 1.4