在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT。SWT的事件模型是和标准的AWT基本一样的。下面将按照事件的四种写法来实现它。

一、匿名内部类的写法


   new MouseAdapter()就是一个匿名内部类,我们去创建一个MouseAdapter类,它继承了MouseListener类,在类中去重写MouseListener的方法。

   使用匿名内部类的形式来写代码简单方便,但是也有一些需要注意的缺点:

   1)由于事件处理代码会随着组件一起分散在代码的各个部分,所以不够集中,这就会导致阅读,维护不方便。

   2)代码以内部类形式处理,如果其他代码需要相同的逻辑则无法重用,导致代码不够简洁。

   3)各个事件的处理完全使用嵌套程序块组成,视觉上会混乱,如果业务逻辑复杂,也会导致阅读,维护不方便。

二、命名内部类写法

    事件代码使用命名内部类的方式可以解决匿名内部类存在的问题:事件处理代码都可以集中在一起,并且都具有有意义的名称,程序容易阅读与维护:另外单个事件处理程序也可以被工具栏,菜单栏等重用。

三、外部类写法

   这种写法和命名内部类相似,只不过将MyMouseDoubleClick单独写为一个类文件,这种写法和命名内部类一样的优点,但是写一样单独的类文件要麻烦一点。

四、实现监听接口的写法

   将HelloWorld类实现MouseListener接口,这样类本身就是一个监听器,使得加入监听器的代码可以更加的简单,这种方式适合加入监听器组件较多,并且要求监听器的事件处理代码可以被组件共用。因为实现MouseListener接口写的事件方法多,可以在没用到的事件方法进行空实现。还有特别注意的是事件方法和其他方法混合写在一起,容易产生误读,所以要在前面加上详细的注解说明

总结:

   匿名内部类方式方便简单,但不适合代码多,逻辑复杂的情况。从代码书写,阅读,维护以及程序的可扩展性来看,命名内部类的写法最为推荐。外部类主要是为了代码重用才考虑使用。第四种方式要求组件可以共同使用事件代码时使用。

SWT组件添加事件的四种方式的更多相关文章

  1. Java添加事件的四种方式

    Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动) /** * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器 * * @author ...

  2. android点击事件的四种方式

    android点击事件的四种方式 第一种方式:创建内部类实现点击事件 代码如下: package com.example.dail; import android.text.TextUtils; im ...

  3. jQuery绑定事件的四种方式:bind、live、delegate、on

    1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undele ...

  4. 给TextView添加超链接的四种方式

    因为在上上篇博客中介绍了SpannableString的使用(SpannableString使用详解),由此想到给TextView添加超链接究竟有多少种方式?经过个人总结,现在一共发现四种,如果还有其 ...

  5. jQuery绑定事件的四种方式

      jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都 ...

  6. jQuery 事件绑定四种方式,delegate委托强大绑定在3.0中修改为on

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. React组件绑定this的四种方式

    题图 By HymChu From lnstagram 用react进行开发组件时,我们需要关注一下组件内部方法this的指向,react定义组件的方式有两种,一种为函数组件,一种为类组件,类组件内部 ...

  8. jQuery绑定事件的四种方式区别

    jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前 一:bind(t ...

  9. GRpc添加客户端的四种方式

    随着微服务的发展,相信越来越多的.net人员也开始接触GRpc这门技术,大家生成GRpc客户端的方式也各不相同,今天给大家介绍一下依据Proto文件生成Rpc客户端的四种方式 前提:需要安装4个Nug ...

随机推荐

  1. Django 静态文件配置(static files)

    Django version: 1.9 Python versrion: 3.5.2 这几天Django配置静态文件(本例是要加载index.css), 总是不对,最后终于试对了,这里记录下,方便以后 ...

  2. linux基础3——与XP共享文件夹的设置

    导出linux文件有一般有三种方式: 1.类似windows下的文件直接拖拽,鼠标选中目标文件,从linux文件目录下直接拉至windows文件目录下: 2.U盘拷贝导出到Windows文件目录下:同 ...

  3. 查询sql2005&2008全部表信息

    如果是查询sql server ,把sys.extended_properties修改为SysProperties SELECT 表名 THEN D.NAME ELSE '' END, 表说明 THE ...

  4. C#编辑图像文件EXIF信息

    private void setImageTag(string imgFile, string tagFile, string imgTag, string imgTitle) { ; if (Fil ...

  5. unity自定义工具

    using UnityEngine;using UnityEditor;using System.Collections;using System.IO;using System.Collection ...

  6. SpringBoot和数据库连接

    就像单机Java应用程序一样,和数据库连接需要DataSource,然后生成到数据库的Connection再进行数据库操作 SpringBoot和原生的JDBC 先看SpringBoot项目源码 从上 ...

  7. 关于iOS开发证书的一些总结(很有用)

    今天出了个问题,具体是这样的,我把本地的钥匙传里面的各种东西全部清空了,结果出现了各种不可预料到问题.花了一下午的时间反复的测试,终于把证书的一些问题理顺,然后在这里做一些总结. 先看张图片: 其中, ...

  8. 生产uuid

    uuid生产功能 近端时间要做一个获取唯一流水号的功能,于是有了:ip+starttime+pid+flow的方式. import java.lang.management.ManagementFac ...

  9. Data Transformation / Learning with Counts

    机器学习中离散特征的处理方法 Updated: August 25, 2016 Learning with counts is an efficient way to create a compact ...

  10. 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...