动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.修正Java中wait方法超时语意模糊.
.join 方法.
.充分利用J2EE Enterprise BluePr.
.Java Applet程序设计基础.
.java写的文件浏览器.
.Java程序的加密和反加密.
.J2EE WEB应用架构分析(1).
.java.applet.Applet的 .
.Java实践:用XQuery进行屏幕搜集.
.开源嵌入式数据库-Perst 发.
.Job Scheduler 1.2.5&.
.把您从麻烦中解脱的JNDI在J2EE中.
.Java2的里程碑,J2SE1.4.2and1.5.
.将form保存到图片中.
.JBOSS-QL中的like、order by的实.
.权限系统:分散实现、关注变化.
.JSTL使用心得.
.仅用一个类的服务器.
.在EJB环境中实现“观察者”模式.
.[JAVA100例]067、线程优先级.

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

发表日期:2008-1-5 |



  我不知道大家有没有这样的体验:其实软件使用者要求的东西都很基本,而现在软件做得越来越复杂,有相当大一部分是在于软件开发者把自己的注重力放在了一些附加功能(这些功能可能让用户感到惊喜,但是假如没有它们用户也不会不满足)上,而真正用户的要求却得不到满足。所以大家在设计程序的时候,一定要明白,有时候简单就是一种美,把时间花费到真正有价值的地方去。

  OK,回到我们的主题上来。在这一节中,我将给大家介绍swt的事件模式。在前面我们也提到过,写一个swt程序,无非就是分几步走。其中比较需要费心的就是布置好用户界面和处理各种事件。

  添加了事件处理的Hello,world!

  其实swt中处理事件非常简单,对应于各种事件都有相应的listener类,假如一种事件叫做Xyz,那么对应的listener类就是XyzListener。比如对应于鼠标事件的有MouseListener,对应于键盘事件的就是KeyListener。而在每种widget中,对于它可以处理的事件都有addXyzListener方法,只要把对应的listener实例作为参数传给它就可以了。

  为了更加清楚的说明,我们先来看下面一段程序:

1 public class EventDemo {
2
3 private Shell _shell;
4
5 public EventDemo() {
6 Display display = new Display();
7 Shell shell = new Shell(display,SWT.SHELL_TRIM);
8 setShell(shell);
9 RowLayout layout=new RowLayout();
10 shell.setLayout(layout);
11 shell.setText("Event demo");
12
13 Button button=new Button(shell,SWT.PUSH SWT.CENTER);
14 button.setText("Click me!");
15
16 button.addSelectionListener(new SelectionListener(){
17
18 public void widgetSelected(SelectionEvent event) {
19 handleSelectionEvent();
20 }
21
22 public void widgetDefaultSelected(SelectionEvent event) {
23 }
24 });
25 shell.setBounds(200,300,100,100);
26 shell.open();
27
28 while (!shell.isDisposed()) {
29 if (!display.readAndDispatch()) {
30 display.sleep();
31 }
32 }
33 display.dispose();
34
35 }
36
37 protected void handleSelectionEvent() {
38 MessageBox dialog=new MessageBox(getShell(),SWT.OKSWT.ICON_INFORMATION);
39 dialog.setText("Hello");
40 dialog.setMessage("Hello,world!");
41 dialog.open();
42 }
43
44 /**
45 * @param args
46 */
47 public static void main(String[] args) {
48
49 EventDemo eventdemo=new EventDemo();
50 }
51
52 /**
53 * @return Returns the _shell.
54 */
55 public Shell getShell() {
56 return _shell;
57 }
58
59 /**
60 * @param _shell The _shell to set.
61 */
62 public void setShell(Shell shell) {
63 this._shell =shell;
64 }
65 }
66
  代码段 6

  你可以看到在这段程序中,我们只创建了一个Button,随后调用了它的addSelectionListener()方法,在这个新创建的Listener,我们只为widgetSelected方法添加了代码,并在其中创建了一个对话框。

  假如总结一下,我们可以得出处理事件的几个步骤:

  1. 针对你所处理的事件,找出合适的XyzListener接口

  2. 编写一个新的类,这个类实现了XyzListener接口

  3. 在你所感爱好的事件中编写处理代码,而对于那些你不感爱好的方法可以让它们保持空白(就像实例中的widgetDefaultSelected()方法)一样

  让事件处理更加简单:使用适配器(adapter)

  有时候我们可能会感觉这样仍然不够简单,比如我只对SelectionListener中的widgetSelected()方法感爱好,但是为了能够通过编译器的编译,我却不得不写一个空白的widgetDefaultSelected()方法(因为SelectionListener是一个接口,你必须实现它所有的方法)。

  幸运的是,swt帮我们解决了这个问题,途径就是使用adapter。在swt中,对应于一个XyzListener都有一个XyzAdapter,adapter都是抽象类并且实现了对应的listener接口,它为对应listener接口中的每个方法都定义了一个默认实现(基本上就是什么都不做),我们在使用时候只需要override掉自己感爱好的方法就可以了。

  结合上一小节中的代码,假如使用SelectionAdapter代替SelectionListener的话,我们的代码就可以这样写:


上一篇:使用Hibernate进行对象的关系映射 人气:483
下一篇:利用WHOIS协议查询Internet域名 人气:490
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-29 oblog v4.6 build 20080827
2008-8-29 ASBLOG v2.5 bulid 080828
2008-8-29 时尚DJ舞曲小偷 v3.1
2008-8-29 仿代码信息分类系统 v1.0 Beta3
2008-8-29 浮梦呓语-个人网站 完整版
2008-8-29 多用户QQ空间Flash播放器
2008-8-29 美思卡企业网站管理系统高级版
2008-8-28 LDV个人相册系统 v1.6.1
2008-8-28 讯时网站管理系统CMS v3.5
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号