`
冷漠过客
  • 浏览: 5933 次
社区版块
存档分类
最新评论

SWT 事件综述

阅读更多

SWT作为UI开发,那其事件是非常重要的,下面就针对事件进行些讲解:

SWT的事件模型,类似与Observer模式,在Widget类中持有EventTable EventTable对象主要用来保存事件的监听者(Listener)其有2个成员变量,一个是types和listeners分别存放事件的类型和对应的Listener,它提供了,hook/unhook方法来添加删除Listener,用sendEvent来通知事件发生。

 

那SWT是怎么知道什么时候该出发相应的事件的呢:

其实一切都是基于SWT中Display,这个与操作系统有直接关系的对象,首先在Display中init()方法中调用Native的方法注册window callback。在app打开的时候,Display就会一直运行readAndDispatch方法:

while (!shell.isDisposed()) {
     if (!display.readAndDispatch())
         display.sleep();
      }
display.dispose();

 在这个方法中我们可以发现,Display 不断的将系统发来的消息进行Translate和Dispatch,最后确定到某个控件的某个事件,从而触发这个事件的listener,简单点说就是:用户鼠标点了下,Display接受到系统的MSG,将这个MSG进行解析和调用,根据MSG信息从Display controlTable成员变量确定是哪个控件和什么事件的类型,从而出发该控件的指定事件。

下面我们就来介绍下SWT 中比较常用的事件:

下面再附上一个例子:

 

  1. StackLayout sl=new StackLayout();  
  2. shell.setLayout(sl);  
  3. for(int i=0;i<5;i++){  
  4.     Button b=new Button(shell,SWT.PUSH);  
  5.     b.setText("button"+i);  
  6.     b.setData(i);  
  7.     if(i==0){  
  8.         sl.topControl=b;  
  9.     }  
  10.     b.addSelectionListener(new SelectionListener() {  
  11.                   
  12.         @Override  
  13.         public void widgetSelected(SelectionEvent e) {  
  14.             // TODO Auto-generated method stub  
  15.                       
  16.             for(Control c:shell.getChildren()){  
  17.                 int index=(int) b.getData();  
  18.                 if(index<4){  
  19.                     index++;  
  20.                     if(index==(int)c.getData()){  
  21.                         sl.topControl=c;  
  22.                         shell.layout();  
  23.                         break;  
  24.                     }  
  25.                 }else{  
  26.                     if(0==(int)c.getData()){  
  27.                         sl.topControl=c;  
  28.                         shell.layout();  
  29.                         break;  
  30.                     }  
  31.                 }  
  32.             }  
  33.         }  
  34.                   
  35.         @Override  
  36.         public void widgetDefaultSelected(SelectionEvent e) {  
  37.             // TODO Auto-generated method stub  
  38.                       
  39.         }  
  40.     });  
  41. }  

我们也可以用addListener(type,new Listener());SWT类中有相应的事件类型

参考资料:

http://wenku.baidu.com/link?url=acJ1Ykha5StwZbKX3uxtSKGui2IIb8MheJv-bcq3cku3xCpw3im-d_JMcPdfcKRDj1s-AYXiCq53F-0Y5ad429b5F5XZ9LIkitHwbCnC-f_###
  • 大小: 70.3 KB
  • 大小: 81.1 KB
分享到:
评论

相关推荐

    SWT事件一览表

    SWT事件处理机制是其核心特性之一,它允许开发者响应各种用户交互行为,从而实现动态和响应式的界面设计。 ### SWT事件类型及处理 #### ControlEvent:控件事件 - **监听器和适配器**:`ControlListener`和`...

    SWT JFace 按键、事件、监听

    ### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...

    swt事件处理的编码实现

    在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...

    SWT 全接触(SWT综述)

    薛 笛, 研究生,黑龙江大学信息技术研究所 他写的SWT综述

    swt-64.rar_64位swt_64的SWT_SWT64_swt.jar 64位_swt64位

    此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户界面。 为了在64位Java环境中使用这个库,开发人员需要确保他们的Java开发环境(JDK)也是64位的,因为32位的JDK无法识别...

    SWT源码 swt.jar

    4. 良好的事件处理机制:SWT支持事件驱动编程,允许开发者响应用户的操作。 5. 跨平台:虽然SWT依赖于特定操作系统的库,但Eclipse项目提供了多个平台的版本,如Windows、Linux、Mac OS等。 在"swt-3.7.2-win32-win...

    SWT_AWT_Swing事件处理机制

    SWT事件类通常包含处理事件所需的所有信息,而监听器接口只有一个`handleEvent(Event)`方法,这个方法会接收到所有类型的事件。因此,在SWT中处理事件通常需要在`handleEvent`方法内根据事件类型进行判断。 对比三...

    swt工具文档 swt工具文档

    5. **Event和Listener**: SWT事件模型基于事件和监听器。事件是用户与GUI交互时发生的行为,如点击按钮或改变文本;监听器是注册在Widget上以响应这些事件的代码。 **SWT的主要特点** 1. **原生外观**: SWT通过...

    swt table 实现换行

    根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...

    swt-api swt DOC

    使用SWT API进行开发时,开发者需要了解如何创建窗口、添加控件、设置布局、响应用户事件,以及如何与其他Java库(如JFace)结合使用以提高代码的可读性和可维护性。"swt-api swt DOC"的CHM文档可能涵盖了这些内容,...

    swt的简单代码

    3. SWT事件处理:SWT事件模型允许开发者监听和响应用户的交互,例如点击按钮或输入文本。事件处理器是通过添加监听器(如SelectionListener、FocusListener)到组件来实现的。 4. Display与Shell:在SWT中,Display...

    swt高级密笈源码swt

    3. **事件处理**:SWT事件模型允许开发者响应用户的交互,如点击按钮、输入文本等。理解事件监听器和事件处理方法,可以编写响应用户操作的代码。 4. **对话框**:SWT提供了诸如消息对话框(MessageDialog)、输入...

    swt资源释放问题

    SWT(Standard Widget Toolkit)是一种基于 Java 的 GUI 工具包,提供了丰富的图形用户界面组件和事件处理机制。但是, SWT 中的资源释放问题是一件棘手的事情。如果不正确地释放资源,可能会导致内存泄露、程序...

    SWT配置 SWT配置 SWT配置 SWT配置 SWT配置

    ### SWT配置详解 #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...

    java swt自定义控件

    SWT定义了一系列事件类型,如`SWT.Paint`、`SWT.MouseClick`等。 ```java @Override public void addListener(int eventType, Listener listener) { super.addListener(eventType, listener); // 根据eventType...

    swt教程 有关SWT怎么应用

    此外,SWT还支持事件处理,通过实现监听器接口,可以对用户交互做出响应。 SWT Designer是一个可视化的工具,可以帮助开发者更直观地设计和构建SWT界面,它简化了UI设计过程,使得开发者无需手动编写大量布局和组件...

    SWT开发教程1

    5. SWT事件处理: SWT组件支持事件驱动编程,每个组件都有对应的事件类和监听器接口。例如,Button组件有SelectionListener,可以监听按钮的点击事件。开发者通过实现相应的监听器接口并注册到组件上,即可处理用户...

    SWT源代码 SWT Source code

    SWT(Standard Widget Toolkit)是Eclipse开源项目中的一部分,主要用于构建GUI(图形用户界面)应用程序。它提供了一组与操作系统紧密集成的图形控件,允许开发者创建原生外观的应用程序。SWT的设计目标是提高性能...

    最完美SWT的教程

    - SWT事件模型基于监听器模式,开发者可以创建事件监听器类,实现特定的事件接口,如ActionListener、SelectionListener等,来响应用户操作。 - SWT事件包括按键事件、鼠标事件、焦点事件等,通过事件对象可以获取...

    SWT插件中文教程SWT常用方法

    此外,SWT还提供了事件处理机制,如监听器接口,如ControlListener、MouseListener和KeyListener等,使得开发者能够对用户的行为作出反应。例如,添加一个MouseListener到Button上,就可以在按钮被点击时执行特定的...

Global site tag (gtag.js) - Google Analytics