SWT/JFace开发入门指南(四)

本文是SWT/JFace开发入门系列的第四篇,主要介绍了如何在SWT程序中添加事件处理,从简单的Hello,world!示例开始,讲解了适配器(adapter)的使用,以及EventObject在事件处理中的角色,包括ShellEvent、KeyEvent和MouseEvent的基本概念和应用。" 114927738,10548423,华为S2600T存储在平安城市视频监控中的应用,"['华为存储', '服务器技术', '视频监控系统', '数据安全', '存储扩展性']
摘要由CSDN通过智能技术生成

让你的swt程序动起来

在向使用者提供最差的用户体验方面,中国的IT企业始终走在时代的最前端。之所以有这样的感慨其实是来源于往blog上贴上一节的内容:我用了一整天的功夫,不断与CSDN各种莫名其妙的出错提示进行斗争,最后终于成功的贴了上去。

其实作为CSDN blog一个使用者,我的要求并不高:只要能写blog,能够正常访问就可以了。然而就是这么一点基本的要求好像也得不到满足。

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

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.OK | SWT.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        */
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件开发和挖掘机技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值