快速业务通道

SWT/JFace入门指南之让SWT程序动起来 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
ellAdapter)的ShellEvent,对应于键盘事件(KeyListener,KeyAdapter)的KeyEvent和对应于鼠标事件(MouseListener,MouseAdapter)的MouseEvent。希望可以起到窥一斑而见全豹的作用。

几种EventObject简介

ShellEvent

如果你打开ShellEvent的API,你会很惊讶的发现它只有一个布尔型的属性,就是doit。这个莫名其妙的属性是用来做什么的呢?

我们知道,Shell对应的就是程序的窗口,在ShellListener中定义的几种事件包括窗口激活时候的shellActivated,窗口即将被关闭时候的shellClosed等等。ShellEvent中唯一的属性doit,就是用来设定是否这些动作将有效的。

再说得具体一些,比如Windows下通常我们会通过点击窗口右上角的关闭按钮来关闭窗口,这个时候就会对shellClosed进行调用,如果我们在shellClosed(ShellEvent e)方法中把ShellEvent对象e的doit属性置为了false,那么这次动作就无效,窗口不会被关闭。

在有些其他的EventObject中也有doit属性,它们的作用都是类似的。比如KeyEvent就有这样的一个属性。如果你在keyPressed方法中把它置为了false,就等于你按键盘(对于对应的widget,也就是receiver来讲)没有用。

KeyEvent

其实在前面我们或多或少的已经介绍了一些KeyEvent的知识。KeyEvent包含四个属性:character,doit,keyCode和stateMask。

其中character我们在前面的示例中使用过,它其实就是按键对应字符,而doit和ShellEvent中的doit含义是相同的。

keyCode是我们称为键码的东西,什么是键码呢?如果你打开org.eclipse.swt.SWT的API文档,你会发现里面有很多都和键盘有关的整型常量,比如SWT.F1,SWT.F4,SWT.ESC,SWT.KEYPAD_3之类,这就是他们的键码。

而stateMask则是用来检测Alt,Shift,Ctrl这些键有没有同时被按下。

用stateMask与这些键的键码进行位与运算,如果得到的结果不是0就说明这些键被按下了,比如如果stateMake & SWT.ALT不为零,我们就可以认为Alt键被按下了。

MouseEvent

MouseEvent对应于的是鼠标事件。它同样包含四个属性:button,stateMask,x,y

button就是说明按下的是哪个键,比如对于普通鼠标来说,1是左键,2是右键等等

stateMask却是用来反映键盘的状态的,这和KeyEvent中的stateMask含义是相同的。

x和y指的是相对于部件的横坐标和纵坐标。

你可能会觉得有点疑问,光是这么一点属性就能处理鼠标事件了么?如果我有一个滚轮鼠标,那应该用什么事件处理滚轮的动作呢?答案是:目前可能还无法利用事件模式处理,关于这一点可以参照一下这个url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=58656

关于EventObject我就只介绍到这里,这当然很不够,但是我强烈建议大家在实际应用中多查阅eclipse和swt的相关文档。因为毕竟精力有限,我的目的是让大家通过这篇文章能够找到一个正确获取知识的方向,而不是把这些知识很详细的介绍给大家。

SWT/JFace入门指南之让SWT程序动起来(4)

时间:2011-01-04

Untyped Events

我们在这里提到了untyped events,那肯定就有typed event,typed和untyped本身并不是说事件有什么不一样,而是说事件处理是使用了特定的Listener还是没有。我们前面提到的所有事件处理都是typed 类型,因为它们都使用了特定Listener。

所谓的untyped events你可以理解为一个事件的大杂烩。和untyped event相联系的两个类是Listener和Event。在这里我想请大家注意一下,这两个类不是在org.eclipse.swt.events中,而是在org.eclipse.swt.widgets中。

Listener只有一个方法handleEvent,这个方法里你可以处理任何事件。而如果你打开Event看一下,就能看到我们刚刚在前一小节中介绍过的那些XxxEvent中的属性在这里应有尽有。所以它可以起到替代它们的作用,当然如果是

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号