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 中比较常用的事件:
下面再附上一个例子:
- StackLayout sl=new StackLayout();
- shell.setLayout(sl);
- for(int i=0;i<5;i++){
- Button b=new Button(shell,SWT.PUSH);
- b.setText("button"+i);
- b.setData(i);
- if(i==0){
- sl.topControl=b;
- }
- b.addSelectionListener(new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- // TODO Auto-generated method stub
- for(Control c:shell.getChildren()){
- int index=(int) b.getData();
- if(index<4){
- index++;
- if(index==(int)c.getData()){
- sl.topControl=c;
- shell.layout();
- break;
- }
- }else{
- if(0==(int)c.getData()){
- sl.topControl=c;
- shell.layout();
- break;
- }
- }
- }
- }
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- // TODO Auto-generated method stub
- }
- });
- }
我们也可以用addListener(type,new Listener());SWT类中有相应的事件类型
参考资料:
http://wenku.baidu.com/link?url=acJ1Ykha5StwZbKX3uxtSKGui2IIb8MheJv-bcq3cku3xCpw3im-d_JMcPdfcKRDj1s-AYXiCq53F-0Y5ad429b5F5XZ9LIkitHwbCnC-f_###
相关推荐
SWT事件处理机制是其核心特性之一,它允许开发者响应各种用户交互行为,从而实现动态和响应式的界面设计。 ### SWT事件类型及处理 #### ControlEvent:控件事件 - **监听器和适配器**:`ControlListener`和`...
### SWT JFace 按键、事件、监听 #### 概述 SWT(Standard Widget Toolkit)是Eclipse平台下的图形界面开发工具包,而JFace则是基于SWT之上的高级用户界面工具集。SWT提供了低级别的组件,用于创建跨平台的图形...
在SWT(Standard Widget Toolkit)中,事件处理是构建用户界面不可或缺的一部分。通过监听和响应各种用户交互,我们可以创建响应式且用户友好的应用程序。在给定的标题和描述中,我们关注的是鼠标的双击事件、键盘...
薛 笛, 研究生,黑龙江大学信息技术研究所 他写的SWT综述
此外,SWT还支持事件处理、布局管理以及对话框等特性,使得开发者可以方便地构建复杂的用户界面。 为了在64位Java环境中使用这个库,开发人员需要确保他们的Java开发环境(JDK)也是64位的,因为32位的JDK无法识别...
4. 良好的事件处理机制:SWT支持事件驱动编程,允许开发者响应用户的操作。 5. 跨平台:虽然SWT依赖于特定操作系统的库,但Eclipse项目提供了多个平台的版本,如Windows、Linux、Mac OS等。 在"swt-3.7.2-win32-win...
SWT事件类通常包含处理事件所需的所有信息,而监听器接口只有一个`handleEvent(Event)`方法,这个方法会接收到所有类型的事件。因此,在SWT中处理事件通常需要在`handleEvent`方法内根据事件类型进行判断。 对比三...
5. **Event和Listener**: SWT事件模型基于事件和监听器。事件是用户与GUI交互时发生的行为,如点击按钮或改变文本;监听器是注册在Widget上以响应这些事件的代码。 **SWT的主要特点** 1. **原生外观**: SWT通过...
根据提供的文件信息,可以看出本文主要讨论的是如何在 SWT (Standard Widget Toolkit) 的 Table 控件中实现文本换行的功能。SWT 是一个用于开发基于 Java 的桌面应用程序的工具包,它提供了丰富的用户界面组件来帮助...
使用SWT API进行开发时,开发者需要了解如何创建窗口、添加控件、设置布局、响应用户事件,以及如何与其他Java库(如JFace)结合使用以提高代码的可读性和可维护性。"swt-api swt DOC"的CHM文档可能涵盖了这些内容,...
3. SWT事件处理:SWT事件模型允许开发者监听和响应用户的交互,例如点击按钮或输入文本。事件处理器是通过添加监听器(如SelectionListener、FocusListener)到组件来实现的。 4. Display与Shell:在SWT中,Display...
3. **事件处理**:SWT事件模型允许开发者响应用户的交互,如点击按钮、输入文本等。理解事件监听器和事件处理方法,可以编写响应用户操作的代码。 4. **对话框**:SWT提供了诸如消息对话框(MessageDialog)、输入...
SWT(Standard Widget Toolkit)是一种基于 Java 的 GUI 工具包,提供了丰富的图形用户界面组件和事件处理机制。但是, SWT 中的资源释放问题是一件棘手的事情。如果不正确地释放资源,可能会导致内存泄露、程序...
### SWT配置详解 #### 一、SWT简介与配置的重要性 SWT(Standard Widget Toolkit)是一种用于构建基于Java的应用程序的图形用户界面工具包。它提供了丰富的控件集,并能够生成本地外观和感觉的界面,这使得应用在...
SWT定义了一系列事件类型,如`SWT.Paint`、`SWT.MouseClick`等。 ```java @Override public void addListener(int eventType, Listener listener) { super.addListener(eventType, listener); // 根据eventType...
此外,SWT还支持事件处理,通过实现监听器接口,可以对用户交互做出响应。 SWT Designer是一个可视化的工具,可以帮助开发者更直观地设计和构建SWT界面,它简化了UI设计过程,使得开发者无需手动编写大量布局和组件...
5. SWT事件处理: SWT组件支持事件驱动编程,每个组件都有对应的事件类和监听器接口。例如,Button组件有SelectionListener,可以监听按钮的点击事件。开发者通过实现相应的监听器接口并注册到组件上,即可处理用户...
SWT(Standard Widget Toolkit)是Eclipse开源项目中的一部分,主要用于构建GUI(图形用户界面)应用程序。它提供了一组与操作系统紧密集成的图形控件,允许开发者创建原生外观的应用程序。SWT的设计目标是提高性能...
- SWT事件模型基于监听器模式,开发者可以创建事件监听器类,实现特定的事件接口,如ActionListener、SelectionListener等,来响应用户操作。 - SWT事件包括按键事件、鼠标事件、焦点事件等,通过事件对象可以获取...
此外,SWT还提供了事件处理机制,如监听器接口,如ControlListener、MouseListener和KeyListener等,使得开发者能够对用户的行为作出反应。例如,添加一个MouseListener到Button上,就可以在按钮被点击时执行特定的...