本章将描述事件是如何处理的 通过事件监听器发送和提交事件做为事件接受的
补充,应用应当可以通过向事件监听器提交和发送事件在事件监听器之间交流。
1、 提交事件
通过使用类org.zkoss.zk.ui.event.Events的postEvent方法,一个事件监听器可以提交一个事件到一个
事件队列的队尾。将事件放置完毕后立即返回。直到该事件之前的事件均被处理后,该事件才被进行处
理。
2、发送时间
通过使用类org.zkoss.zk.ui.event.Events的sendEvent方法,一个事件监听器可以使ZK立刻处
理一个指定的事件。直到所有的指定事件的事件监听器都被处理了才返回。事件是在同一个线程中处理
的。
3、线程模型
对于每一个桌面,事件是顺序处理的,所以线程模型是很简单的。类似于开发桌面应用,你不需要去担
心多线程。你所需要去做的是登记事件监听器和被调用时候的处理代码。
小提示:each event listener executes in an independent thread called event
processing thread.while the ZUML page is evaluated in the servlet thread.
4、挂起和恢复
对于高级的应用,你可能需要挂气一个执行知道满足继续执行的条件。类org.zkoss.zk.ui.Executions
的Wait,notify和notifyAll方法提供这些支持。
当一个事件监听器想挂起自己,它可以调用wait方法。另一个线程在应用指定的条件下可以通过调用
notify或者notifyAll来唤醒该进程。下面是一个使用这种机制的例子。
Public void doModal() throws InterruptedException{
Executions.wait(_mutex);
}
Public void endModal(){
Executions.notify(_mutex);
}
这样的使用类似于类java.long.object的wait,notify和notifyAll的用法。尽管如此,你还是不能使用
java.lang.Object的方法来进行挂起和恢复事件监听器的操作。否则,关联到这个桌面的所有事件处理
都将被停止。
注意,不同于java object的wait和notify方法,是否使用synchronized锁来关闭Executions的wait和
notify是可选的。在上面的例子中,我们不需要这样做,因为没有没有可能的racing condition。尽管
如此,如果存在racing condition,你可以象在java Object中使用wait和notify那样使用synchronized
block。
//thread 1
Public void request()
{
Synchronized (mutex)
{
Executions.wait(mutex);
}
}
//thread 2
Public void process()
{
Synchronized(mutex)
{
Executions.notify(mutex);
}
}
相关推荐
Java监听键盘鼠标全局事件 Java监听键盘鼠标全局事件是指使用Java语言来监听和处理键盘和鼠标...该技术需要深入了解Java Native Interface、Windows Hook机制、线程和同步等技术细节,以便正确地实现事件监听和处理。
这些动作会触发程序中的特定行为,通常通过事件监听器来实现。本文将深入探讨事件处理监听器的概念,以及如何在Java或类似的面向对象语言中设置和使用它们。 首先,我们来理解“事件”这个概念。在UI编程中,事件是...
而通过JavaScript方法添加事件监听器,可以更灵活地控制事件处理过程,并且可以轻松地添加和移除监听器。 在前端开发中,对this关键字的理解和使用是必要的。在事件处理函数中,this关键字默认指向触发事件的元素,...
`addEventListener`和`removeEventListener`是`cc.EventTarget`接口提供的方法,它们允许我们对任何具有事件处理能力的对象添加或移除事件监听器。 ### 事件类型 Cocos Creator支持多种内置事件类型,包括但不限于...
总之,Windchill的事件监听机制是系统灵活性和可扩展性的重要组成部分,它允许开发者通过自定义代码响应系统内部的各种事件,从而实现业务逻辑的自动化和个性化。理解和掌握这一机制对于深入理解和优化Windchill系统...
* 解耦合:事件监听器机制可以将事件的发送方和事件的处理方解耦合,使得程序更加灵活和可维护。 * 灵活性:事件监听器机制可以使得程序更加灵活和可扩展。 * 耦合度低:事件监听器机制可以降低程序的耦合度,使得...
Java自定义事件监听允许开发者创建自己的事件类型并相应地处理它们,以满足特定应用的需求。下面我们将深入探讨这一主题。 首先,我们需要理解Java AWT(Abstract Window Toolkit)和Swing库中的基础事件监听机制。...
通过对这个项目的研究,开发者可以更深入地了解如何在Android中实现全局的触摸事件监听和处理。 总结来说,"任意位置任意事件的监听"是通过监听屏幕上的触摸事件并根据位置信息来触发特定行为的技术。在Android开发...
可以使用`addEventListener`方法添加事件监听器,并处理不同的滚轮事件名称。 ```javascript document.addEventListener('DOMContentLoaded', function() { var body = document.body; // 针对大部分浏览器 ...
标题提到的“android 外部类作为事件监听器类”是指将一个非匿名类(外部类)作为事件处理的对象,这在某些情况下可能是必要的,比如当监听器需要持有较复杂的成员变量或者实现多个接口时。然而,描述中提到的一个...
首先,ScrollView的滚动事件监听主要涉及到两个关键接口:OnScrollChangedListener和ViewTreeObserver.OnGlobalLayoutListener。OnScrollChangedListener提供了当ScrollView滚动时触发的方法,而...
本资源介绍了java图形界面开发中的事件监听及事件处理的相关内容,对于学习的相关人员有一定的帮助。
本文将详细解析Java事件处理机制中事件监听器的四种实现方式:自身类作为事件监听器、外部类作为事件监听器、匿名内部类作为事件监听器以及内部类作为事件监听器。 1. **自身类作为事件监听器** 在自身类作为事件...
【Qt全局鼠标、键盘事件监听器库】是一个用于在Windows和Linux系统上实现跨平台的全局鼠标和键盘事件捕获的库。这个库基于流行的Qt框架,为开发者提供了一个便捷的方式来监听并处理系统的输入事件,无论是来自应用...
5. **wmevent_test**: 压缩包中的`wmevent_test`可能是一个测试程序或示例代码,它可能包含了具体的USB事件监听和处理逻辑。如果需要进一步了解这个程序,需要查看源代码或运行它以观察其行为。 总的来说,QT5为...
事件监听器是Android开发中的重要概念,用于捕捉和响应用户在界面上的各种交互操作。在Android中,事件监听器主要用于处理UI控件的点击、触摸、键盘输入等事件。本篇将详细介绍EditText的事件监听。 首先,我们来看...
### Java GUI 事件监听知识点详解 #### 一、概述 在Java编程中,图形用户界面(GUI)的设计是一项重要的技能。对于初学者来说,掌握如何创建一个简单的界面,并且能够处理用户交互事件是非常必要的。本篇文章将...
Servlet事件监听器和JSP是Java Web开发中的重要组成部分,它们在构建动态网站时起着核心作用。Servlet事件监听器允许开发者对特定的Servlet容器事件做出反应,而JSP则是用于创建动态网页的简便方式。这里我们将深入...
在`EventHandlingTest`这个示例项目中,可能包含了对上述概念的实践代码,你可以通过查看和运行这个项目来更直观地理解libGDX的事件监听机制。通过对输入事件的精确控制,我们可以创建出高度互动的游戏和应用程序,...
然后,我们定义了一个事件监听器接口RobotListener,包含两个事件处理方法working和dancing。最后,我们实现了事件监听器MyRobotListener,实现了事件处理方法。 在使用监听器模式时,需要注意以下几点: 1. 事件...