`

关于swt中的事件机制

 
阅读更多

在很多时候,我们都要用到自己抛出事件,所以就必须了解事件的机制

以SelectionListener中的widgetSelected为例子

Button btn = new Button(shell, 0);

btn.setText("这是测试");

btn.addListener(SWT.Selection, new Listener() {

//相当于btn.addSelectionListener(new SelectionListener)实现了widgetSelected

@Override

public void handleEvent(Event arg0) {

System.err.println("我被点击了");

}

});

//自己抛出事件,swt.selection事件

btn.notifyListeners(SWT.Selection, null);

 

在addListener(int eventType,Listener listener);的方法中

eventType 就是事件的类型

listener 就是事件的实现接口

 

其实事件机制就是监听者模式,eventType就是监听的事情类型,而widgetSelected的事件类型就是SWT.Selection,btn每次点击中都会触发很多种事件类型,比如说mouseListener,selectionListener,但我们在事件列表中监听到了selection的事件,当selection发生的时候,就会触发selectionListener这个实现类。这种就是监听者模式。

 

而在selectionListener中还包括了widgetDefaultSelected,而这个widgetDefaultSelected的事件类型就是SWT.DefaultSelection。

 

所有的addXXXListener事件都是通过notifyListeners来实现的,只不过,它将事件的类型隐藏了起来,同时将多种事件类型封装到大的listener中。

 

就好像,mouseListener中

btn.addMouseListener(new MouseListener() {

 

@Override

public void mouseUp(MouseEvent arg0) {

// TODO Auto-generated method stub

 

}

 

@Override

public void mouseDown(MouseEvent arg0) {

// TODO Auto-generated method stub

 

}

 

@Override

public void mouseDoubleClick(MouseEvent arg0) {

// TODO Auto-generated method stub

 

}

 

});

这个事件,等效于

btn.addListener(SWT.MouseUp, new Listener(){@Override

public void handleEvent(Event arg0) {

// TODO Auto-generated method stub

 

}});

btn.addListener(SWT.MouseDown, new Listener(){@Override

public void handleEvent(Event arg0) {

// TODO Auto-generated method stub

 

}});

btn.addListener(SWT.MouseDoubleClick,new Listener(){@Override

public void handleEvent(Event arg0) {

// TODO Auto-generated method stub

 

 

}});

可能说的有点啰嗦,反正就是这么回事,事件的实现模式,就是监听者模式。

如有说错,请轻拍。

分享到:
评论

相关推荐

    SWT_AWT_Swing事件处理机制

    在SWT中,事件和事件监听器是通过事件监听器表(Listener List)来管理的。开发者可以注册一个或多个监听器到组件上,比如Display的PaintListener、Control的MouseListener等。SWT事件类通常包含处理事件所需的所有...

    SWT JFace 按键、事件、监听

    通过以上介绍,我们可以看出SWT为开发者提供了一套全面的键盘和鼠标事件处理机制,这对于构建功能丰富且用户体验良好的应用程序来说是非常重要的。开发者可以根据不同的需求选择合适的事件监听器,以实现所需的功能...

    SWT事件一览表

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

    [原创]SWT 深入内幕之消息机制探秘

    当一个事件发生时,SWT会调用对应监听器中的方法来处理该事件。 消息传递在SWT中主要通过以下方式实现: 1. **事件监听器接口**:开发者通过实现特定的监听器接口,如ActionListener或MouseListener,为UI组件注册...

    关于SWT的中文教程

    理解SWT可以帮助开发者更好地掌握Eclipse RCP的底层机制。 通过学习这个SWT中文教程,开发者不仅可以掌握如何使用SWT创建GUI,还可以进一步提升在Java桌面应用开发领域的技能。教程可能涵盖以上所有知识点,通过...

    SWT深入内幕之消息机制探秘

    - SWT在底层实现了事件分派机制,该机制负责接收原生消息并将其转化为Java事件。 - 这些事件随后被传递给注册的事件监听器,由这些监听器决定如何处理。 3. **线程安全**: - 为了保证UI更新的安全性,SWT采用了...

    SWT深入内幕之消息机制探秘.pdf

    SWT实现这一点的方式是通过JNI接口创建一个桥接层,这个桥接层负责将来自操作系统的原生消息转换成Java事件,并分发给相应的Java对象处理。 ##### 2. 对象指针传递 为了使Java对象能够接收和处理来自操作系统的消息...

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

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

    SWT源码 swt.jar

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

    swt资源释放问题

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

    swt/Jface中文教程

    此外,SWT还提供了强大的事件处理机制,使得开发者可以轻松地响应用户的交互行为。 - **JFace简介**:JFace建立在SWT之上,提供了一系列的工具和服务,旨在简化GUI的开发过程。它包括了对话框管理器、视图管理器、...

    swt工具文档 swt工具文档

    SWT(Standard Widget Toolkit)是Java编程环境中一个用于创建图形用户界面(GUI)的开源库。它是Eclipse项目的一部分,旨在提供...通过深入理解SWT的组件、布局和事件处理机制,开发者可以构建出丰富多样的用户界面。

    swt/jface中文教程

    SWT 是一个低级别的类库,提供了大量的图形组件和事件处理机制,而 JFace 是一个高级别的类库,提供了大量的快捷方式和简化的 GUI 开发方式。SWT 和 JFace 的结合使用,能够使开发者更好地控制 GUI 的外观和行为。 ...

    SWT中bean与控件的数据绑定

    1. **数据绑定的基本概念**:解释什么是数据绑定,为什么在SWT中使用数据绑定,以及它与传统事件驱动编程的区别。 2. **Bean和控件**:bean通常是指包含数据和行为的对象,而在SWT中,控件是指UI元素,如Text、...

    SWT的简单实例

    在SWT中,你可以自定义按钮的文字、图标以及响应的事件处理器。 2. **TEXT**: TEXT组件用于创建文本输入框。用户可以在其中输入文本,开发者可以获取并处理这些文本。TEXT组件支持多种特性,如只读、多行显示、自动...

    SWT源代码 SWT Source code

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

    关于swing和swt的小练习

    在Java编程领域,Swing...综合这个压缩包中的练习,开发者可以通过运行和分析代码,了解Swing和SWT在实际项目中的应用,掌握组件的用法,学习布局设计,以及如何处理用户事件。这对于提高Java GUI编程技能非常有帮助。

    java swt自定义控件

    Java SWT(Standard Widget Toolkit)是Java平台上用于创建桌面应用程序的一个库,它提供了丰富的...通过理解控件的基本原理、绘图机制、事件处理和布局管理,我们可以创建出满足特定需求的、富有吸引力的界面元素。

    SWT的官方压缩包

    `JFace`标签暗示了这个压缩包可能也包含了JFace库,JFace是基于SWT构建的,提供了如对话框、表视图、树视图等高级控件,以及数据绑定和事件处理机制,让开发者能够更专注于业务逻辑而不是底层GUI的实现。 `....

    SWT开发教程1

    这些组件提供了丰富的事件处理机制,允许开发者响应用户的操作。例如,Button组件可以处理点击事件,Text组件则用于接收和显示文本输入。 3. JFace: JFace是建立在SWT之上的抽象层,它简化了GUI开发,提供了数据...

Global site tag (gtag.js) - Google Analytics