|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.awt.EventQueue
public class EventQueue
EventQueue 是一个与平台无关的类,它将来自于底层同位体类和受信任的应用程序类的事件列入队列。
它封装了异步事件指派机制,该机制从队列中提取事件,然后通过对此 EventQueue 调用 dispatchEvent(AWTEvent) 方法来指派这些事件(事件作为参数被指派)。该机制的特殊行为是与实现有关的。指派实际排入到该队列中的事件(注意,正在发送到 EventQueue 中的事件可以被合并)的唯一要求是:
AWTEvent A 比 AWTEvent B 先排入到 EventQueue 中,那么事件 B 不能在事件 A 之前被指派。
一些浏览器将不同代码基中的 applet 分成独立的上下文,并在这些上下文之间建立一道道墙。在这样的场景中,每个上下文将会有一个 EventQueue。其他浏览器将所有的 applet 放入到同一个上下文中,这意味着所有 applet 只有一个全局 EventQueue。该行为是与实现有关的。有关更多信息,请参照浏览器的文档。
有关事件指派机制的线程问题,请参阅 AWT 线程问题。
| 构造方法摘要 | |
|---|---|
EventQueue()
|
|
| 方法摘要 | |
|---|---|
protected void |
dispatchEvent(AWTEvent event)
指派一个事件。 |
static AWTEvent |
getCurrentEvent()
返回当前正在被 EventQueue(它与正在调用的线程相关)指派的事件。 |
static long |
getMostRecentEventTime()
返回最近事件的时间戳(如果有),该事件从 EventQueue(它与正在调用的线程相关)进行指派。 |
AWTEvent |
getNextEvent()
从 EventQueue 中移除一个事件,并返回该事件。 |
static void |
invokeAndWait(Runnable runnable)
导致 runnable 的 run 方法在 the system EventQueue 的指派线程中被调用。 |
static void |
invokeLater(Runnable runnable)
导致 runnable 的 run 方法在 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 |
| 构造方法详细信息 |
|---|
public 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 - 所需事件类型的 id
nullprotected void dispatchEvent(AWTEvent event)
| 事件类型 | 源类型 | 指派 |
|---|---|---|
| ActiveEvent | 所有 | event.dispatch() |
| 其他 | Component | source.dispatchEvent(AWTEvent) |
| 其他 | MenuComponent | source.dispatchEvent(AWTEvent) |
| 其他 | 其他 | 无动作(忽略) |
event - java.awt.AWTEvent 的实例或者是它的子类
NullPointerException - 如果 event 为 nullpublic static long getMostRecentEventTime()
EventQueue(它与正在调用的线程相关)进行指派。如果具有时间戳的事件目前正被指派,则返回它的时间戳。如果没有事件被指派,则返回 EventQueue 的初始化时间。在 JDK 的当前版本中,只有 InputEvent、ActionEvent 和 InvocationEvent 有时间戳;但是,JDK 的未来版本可能将时间戳添加到其他事件类型中。注意,该方法只应该从应用程序事件的指派线程进行调用。如果从另一个线程调用该方法,则返回当前系统的时间(由 System.currentTimeMillis() 报告)。
InputEvent 的时间戳,要指派的 ActionEvent 或 InvocationEvent,如果在不同于事件指派线程的线程上调用该方法,则返回 System.currentTimeMillis()InputEvent.getWhen(),
ActionEvent.getWhen(),
InvocationEvent.getWhen()public static AWTEvent getCurrentEvent()
EventQueue(它与正在调用的线程相关)指派的事件。只有某个方法需要访问事件时,但是并没有被设计为可以将事件作为参数来接受,则此方法很有用。注意,该方法应该只从应用程序的事件指派线程进行调用。如果从另一个线程调用该方法,则返回 null。
public void push(EventQueue newEventQueue)
EventQueue。任何挂起的事件都被传输到 EventQueue 以备处理。
newEventQueue - 要使用的 EventQueue(或其子类的)的实例
NullPointerException - 如果 newEventQueue 为 nullpop()
protected void pop()
throws EmptyStackException
EventQueue 指派事件。任何挂起的事件都被传输到以前的 EventQueue 以备处理。
警告:为了避免死锁,不要在子类中将该方法声明为 synchronized。
EmptyStackException - 如果以前没有对该 EventQueue 执行 push 操作push(java.awt.EventQueue)public static boolean isDispatchThread()
EventQueue 的指派线程,则返回 true。使用此调用确保给定的任务正在当前 AWT EventDispatchThread 上执行(或没有执行)。
EventQueue 的指派线程上运行,则返回 true。public static void invokeLater(Runnable runnable)
runnable 的 run 方法在 the system EventQueue 的指派线程中被调用。
runnable - Runnable 对象,其 run 方法应该在 EventQueue 上同步执行invokeAndWait(java.lang.Runnable)
public static void invokeAndWait(Runnable runnable)
throws InterruptedException,
InvocationTargetException
runnable 的 run 方法在 the system EventQueue 的指派线程中被调用。在所有挂起事件被处理后才发生。在这发生之前调用被阻塞。如果从事件指派线程进行调用,则该方法将抛出 Error。
runnable - Runnable 对象,其 run 方法应该在 EventQueue 上同步执行
InterruptedException - 如果任何线程中断了该线程
InvocationTargetException - 如果运行 runnable 时抛出一个 throwableinvokeLater(java.lang.Runnable)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。