- 浏览: 565556 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (618)
- java (109)
- Java web (43)
- javascript (52)
- js (15)
- 闭包 (2)
- maven (8)
- 杂 (28)
- python (47)
- linux (51)
- git (18)
- (1)
- mysql (31)
- 管理 (1)
- redis (6)
- 操作系统 (12)
- 网络 (13)
- mongo (1)
- nginx (17)
- web (8)
- ffmpeg (1)
- python安装包 (0)
- php (49)
- imagemagic (1)
- eclipse (21)
- django (4)
- 学习 (1)
- 书籍 (1)
- uml (3)
- emacs (19)
- svn (2)
- netty (9)
- joomla (1)
- css (1)
- 推送 (2)
- android (6)
- memcached (2)
- docker、 (0)
- docker (7)
- go (1)
- resin (1)
- groovy (1)
- spring (1)
最新评论
-
chokee:
...
Spring3 MVC 深入研究 -
googleyufei:
很有用, 我现在打算学学Python. 这些资料的很及时.
python的几个实用网站(转的) -
hujingwei1001:
太好了找的就是它
easy explore -
xiangtui:
例子举得不错。。。学习了
java callback -
幻影桃花源:
太好了,謝謝
Spring3 MVC 深入研究
1.Event 事件系统
文章分类:Web前端
要说GXT里面的事件Event,就必须先了解一下GWT提供的事件系统
GWT中基础的事件类是:com.google.gwt.user.client.Event
在这里GWT给我们提供了浏览器原生的20种左右的事件,每一个事件都用一个Int整数类型表示
如:
- /**
- * Fired when the user clicks on an element.
- */
- public static final int ONCLICK = 0x00001 ;
/** * Fired when the user clicks on an element. */ public static final int ONCLICK = 0x00001;
GWT只提供了原生的事件,实际GXT中需要很多的自定义事件,GXT是如何扩展事件系统的呢?
GXT中创建了一个:com.extjs.gxt.ui.client.event.EventType
类,通过创建这个类的实例来表示一种事件(对比GWT中是用int整数来表示一种事件)。GWT中通过int类型来区别不同的事件,而GXT的
EventType则是通过比较内存地址来判断是否为不同的事件。
com.extjs.gxt.ui.client.event.Events 类列出了GXT提供的所有事件类型,截取片段代码如下:
- /**
- * Defines the GXT event types.
- */
- public class Events {
- /**
- * Activate event type.
- */
- public static final EventType Activate = new EventType();
- /**
- * Add event type.
- */
- public static final EventType Add = new EventType();
- /**
- * Adopt event type.
- */
- public static final EventType Adopt = new EventType();
/** * Defines the GXT event types. */ public class Events { /** * Activate event type. */ public static final EventType Activate = new EventType(); /** * Add event type. */ public static final EventType Add = new EventType(); /** * Adopt event type. */ public static final EventType Adopt = new EventType();
因为这些事件类型是带有逻辑的自定义的事件,数量上远远大于浏览器的原生事件。目前GXT2.1的事件就达到145种,未来应该还会添加!
这样说来GXT与GWT采用了2套事件系统,会不会有冲突呢?
比如GWT捕获到一个Event.ONCLICK的单击事件,通知给GXT,因为这是一个int数据,而GXT识别的是EventType类型的事件,GXT如何来识别GWT的事件并转化为自己能够认识的EventType事件呢?
解决方法是GXT将GWT提供的原生事件与GXT中的事件进行了绑定。参考代码:
- private static Map<String, EventType> browserEvents = new FastMap<EventType>();
- static {
- browserEvents.put(String.valueOf(Event.ONBLUR), OnBlur);
- browserEvents.put(String.valueOf(Event.ONCHANGE), OnChange);
- browserEvents.put(String.valueOf(Event.ONCLICK), OnClick);
- browserEvents.put(String.valueOf(Event.ONCONTEXTMENU), OnContextMenu);
- browserEvents.put(String.valueOf(Event.ONDBLCLICK), OnDoubleClick);
- browserEvents.put(String.valueOf(Event.ONERROR), OnError);
- browserEvents.put(String.valueOf(Event.ONFOCUS), OnFocus);
- browserEvents.put(String.valueOf(Event.ONKEYDOWN), OnKeyDown);
- browserEvents.put(String.valueOf(Event.ONKEYPRESS), OnKeyPress);
- browserEvents.put(String.valueOf(Event.ONKEYUP), OnKeyUp);
- browserEvents.put(String.valueOf(Event.ONLOAD), OnLoad);
- browserEvents.put(String.valueOf(Event.ONLOSECAPTURE), OnLoseCapture);
- browserEvents.put(String.valueOf(Event.ONMOUSEDOWN), OnMouseDown);
- browserEvents.put(String.valueOf(Event.ONMOUSEUP), OnMouseUp);
- browserEvents.put(String.valueOf(Event.ONMOUSEOVER), OnMouseOver);
- browserEvents.put(String.valueOf(Event.ONMOUSEOUT), OnMouseOut);
- browserEvents.put(String.valueOf(Event.ONMOUSEMOVE), OnMouseMove);
- browserEvents.put(String.valueOf(Event.ONMOUSEWHEEL), OnMouseWheel);
- browserEvents.put(String.valueOf(Event.ONPASTE), OnPaste);
- browserEvents.put(String.valueOf(Event.ONSCROLL), OnScroll);
- }
private static Map<String, EventType> browserEvents = new FastMap<EventType>(); static { browserEvents.put(String.valueOf(Event.ONBLUR), OnBlur); browserEvents.put(String.valueOf(Event.ONCHANGE), OnChange); browserEvents.put(String.valueOf(Event.ONCLICK), OnClick); browserEvents.put(String.valueOf(Event.ONCONTEXTMENU), OnContextMenu); browserEvents.put(String.valueOf(Event.ONDBLCLICK), OnDoubleClick); browserEvents.put(String.valueOf(Event.ONERROR), OnError); browserEvents.put(String.valueOf(Event.ONFOCUS), OnFocus); browserEvents.put(String.valueOf(Event.ONKEYDOWN), OnKeyDown); browserEvents.put(String.valueOf(Event.ONKEYPRESS), OnKeyPress); browserEvents.put(String.valueOf(Event.ONKEYUP), OnKeyUp); browserEvents.put(String.valueOf(Event.ONLOAD), OnLoad); browserEvents.put(String.valueOf(Event.ONLOSECAPTURE), OnLoseCapture); browserEvents.put(String.valueOf(Event.ONMOUSEDOWN), OnMouseDown); browserEvents.put(String.valueOf(Event.ONMOUSEUP), OnMouseUp); browserEvents.put(String.valueOf(Event.ONMOUSEOVER), OnMouseOver); browserEvents.put(String.valueOf(Event.ONMOUSEOUT), OnMouseOut); browserEvents.put(String.valueOf(Event.ONMOUSEMOVE), OnMouseMove); browserEvents.put(String.valueOf(Event.ONMOUSEWHEEL), OnMouseWheel); browserEvents.put(String.valueOf(Event.ONPASTE), OnPaste); browserEvents.put(String.valueOf(Event.ONSCROLL), OnScroll); }
browserEvents 这个map对象绑定了GWT事件与GXT的EventType事件
当GXT接收到GWT传递过来的一个int类型的事件时,GXT会调用:
- public static EventType lookupBrowserEvent( int browserEventType) {
- EventType type = browserEvents.get(String.valueOf(browserEventType));
- assert type != null ;
- return type;
- }
public static EventType lookupBrowserEvent(int browserEventType) { EventType type = browserEvents.get(String.valueOf(browserEventType)); assert type != null; return type; }
方法来查找对应的EventType事件,找到后以自己的一套事件系统来传递和处理这个事件
发表评论
-
HTTP协议之multipart/form-data请求分析
2015-11-09 17:41 771原文地址:http://blog.csdn ... -
Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别
2015-10-30 18:01 1054原文地址:http://blog.csdn.net/mmllk ... -
过滤器和拦截器的区别
2015-10-30 18:00 661原文地址:http://blog.163.com/hzd_lo ... -
过滤器、监听器、拦截器的区别
2015-10-30 17:59 597原文地址:http://blog.csdn.net/x_yp/ ... -
【JSP】让HTML和JSP页面不缓存的方法
2015-10-14 10:16 487原文地址:http://blog.csdn.net/juebl ... -
jsp去掉浏览器缓存
2015-10-14 09:21 630原文地址:http://bbs.csdn.net/topics ... -
pageContext对象的用法
2015-09-04 21:24 709原文地址:http://blog.csdn.net/warcr ... -
log4j日志文件乱码问题的解决方法
2015-01-06 18:11 829原文地址:http://blog.csdn.net/inkfi ... -
JEECMS 系统权限设计
2014-09-05 16:25 946原文地址:http://chinajweb.iteye.com ... -
使用servlet保存用户上传的文件到本地
2014-08-12 14:46 635原文地址:http://blog.csdn.net/shuwe ... -
Servlet 实现文件的上传与下载
2014-08-12 14:44 891原文地址:http://www.2cto.com/kf/201 ... -
android文件上传到服务器
2014-08-12 11:03 397代码非原创,fix了bug,完善的还是需要再思量: /** * ... -
常用社交网络(SNS、人人网、新浪微博)动态新闻(feed、新鲜事、好友动态)系统浅析
2014-08-05 15:09 937原文地址:http://blog.csdn.net/sunme ... -
Feed系统架构资料收集
2014-08-05 15:08 624原文地址:http://blog.csdn ... -
微博feed系统推拉模式和时间分区拉模式架构探讨
2014-08-05 14:47 417原文地址:http://www.csdn.net/articl ... -
spring 出错,Could not find acceptable representation
2014-08-03 14:41 1534原文地址:http://www.myexception.cn/ ... -
spring @ResponseBody 返回json格式有关问题
2014-08-03 14:20 638原文地址:http://www.myexception.cn/ ... -
httpclient上传文件及传参数
2014-07-27 14:02 1197原文地址:http://hyacinth.blog.sohu. ... -
在eclipse中把java工程变为web工程
2014-06-27 11:18 712项目上点鼠标右键->properties->Pro ... -
配置Tomcat直接显示目录结构和文件列表
2014-06-10 13:52 735配置Tomcat直接显示目录结构和文件列表 TomcatSe ...
相关推荐
"Event事件总汇资源下载" 提供了一个全面了解和学习事件处理的平台。 事件通常在用户与应用程序交互时触发,例如点击按钮、滚动页面或输入数据等。这些动作由操作系统或用户界面框架捕获并转换为事件对象,然后通过...
在IT行业中,事件(event)是程序设计中的一个重要概念,特别是在多任务和实时系统中。"ircomm_event.rar_event"这个标题暗示我们正在处理一个与红外通信(IrDA,Infrared Data Association)相关的事件机制。IrDA是一...
- **咖啡俱乐部(Coffee Club)案例**:本书通过一个具体的例子——咖啡俱乐部系统,详细介绍了如何使用Event-B进行系统建模与设计。该案例涉及到了上下文的定义、机器的构建、事件的描述以及细化过程等内容。 - **...
离散事件系统(Discrete Event Systems,DES)是指在时间上具有离散特征的系统,其中事件的发生是瞬时的,即不占据时间区间,但会导致系统状态的转变。在工业控制系统、通信网络、交通管理等领域,离散事件系统的...
在嵌入式Linux系统中,MIDI(Musical Instrument Digital Interface)字节与序列事件编码器是音频处理领域的一个重要组件。"seq_midi_event.rar_event"标题中的"rar_event"可能指的是一个压缩包,其中包含了与MIDI...
教程强调了几个核心概念,比如事件队列、处理器设计模式(Handler Design Pattern)、无头处理器模式(Headless Handlers Pattern)、扩展处理器模式(Extended Handlers Pattern)、事件对象(Event Objects)、...
通过定义不同的机器(如红绿灯控制器),以及每个机器的事件(如切换信号),可以构建一个完整的系统模型,并利用 Event-B 的数学证明技术来验证其行为是否符合预期。 #### 五、结论 Event-B 作为一种强大的形式化...
在Linux API驱动程序中,事件解析(Event Parsing)是一个关键环节,它涉及到系统与应用程序之间的交互,特别是当涉及内核事件跟踪和用户空间分析时。`op_parse_event.rar_event`这个压缩包包含了实现这一功能的源...
事件记录系统(Eventlog系统)在其中扮演了关键角色,它能实时跟踪并记录设备的动作和状态信息,对于故障排查和状态监测起到决定性作用。 文章提到,Eventlog系统能够区分不同级别的报警信息,通过颜色标识,但仅...
通过该系统,研究团队成功地识别出了与选举相关的各种事件,展示了EDCoW在处理大规模社交媒体数据方面的强大能力。 #### 结论与展望 总体而言,EDCoW提供了一种新颖且有效的方法来应对Twitter上事件检测的挑战。它...
在MATLAB Simulink环境中,事件触发控制是一种高级的控制策略,它允许系统仅在特定事件发生时执行控制算法,而不是按照固定的时间步长。这种控制方式可以显著提高效率,减少计算负担,同时还能实现精确的控制效果。...
- **事件的概念**:首先定义了什么是事件,以及为什么事件处理对于现代软件系统至关重要。 - **事件处理的重要性**:讨论了事件驱动架构的优势,包括响应性、灵活性以及可扩展性等方面。 - **事件处理的应用场景**:...
总的来说,`hci_event.c`是理解Linux系统下蓝牙协议栈如何处理底层事件的关键。它展示了BlueZ如何将硬件的原始事件转换为上层应用程序可理解和操作的抽象,使得开发者能够更便捷地利用蓝牙功能。通过对这个文件的...
在Windows API中,`keybd_event()`和`mouse_event()`是两个重要的函数,它们分别用于模拟键盘事件和鼠标事件。这两个函数在开发自动化测试、模拟用户操作或游戏编程等场景中非常有用。让我们深入探讨一下这两个函数...
事件树分析(Event Tree Analysis,ETA)是一种系统安全分析方法,用于评估复杂系统中可能出现的故障序列及其导致的后果。这种技术在核能、石油、化工、航空航天等高风险行业中广泛应用,以识别潜在事故场景并制定...
"event"标签进一步证实了这一点,这通常指的是系统或应用程序中发生的特定事件、错误、警告或信息的日志记录。 在描述中提到的"GPS Source-windows CE",表明这个Event Logger可能与GPS数据源有关,特别设计用于...
然而,Unity还提供了其他事件系统,如UnityEvent和UnityEventBase,它们是Unity Inspector支持的,可以直接在Inspector中添加、编辑和删除事件处理函数,非常适合与UI组件配合使用。这些类位于`UnityEngine.UI`命名...