SWT组件添加事件的四种方式
在我们CS日常开发过程中会经常去为组件添加事件,我们常用的为AWT与SWT。SWT的事件模型是和标准的AWT基本一样的。下面将按照事件的四种写法来实现它。
一、匿名内部类的写法
new MouseAdapter()就是一个匿名内部类,我们去创建一个MouseAdapter类,它继承了MouseListener类,在类中去重写MouseListener的方法。
使用匿名内部类的形式来写代码简单方便,但是也有一些需要注意的缺点:
1)由于事件处理代码会随着组件一起分散在代码的各个部分,所以不够集中,这就会导致阅读,维护不方便。
2)代码以内部类形式处理,如果其他代码需要相同的逻辑则无法重用,导致代码不够简洁。
3)各个事件的处理完全使用嵌套程序块组成,视觉上会混乱,如果业务逻辑复杂,也会导致阅读,维护不方便。
二、命名内部类写法
事件代码使用命名内部类的方式可以解决匿名内部类存在的问题:事件处理代码都可以集中在一起,并且都具有有意义的名称,程序容易阅读与维护:另外单个事件处理程序也可以被工具栏,菜单栏等重用。
三、外部类写法
这种写法和命名内部类相似,只不过将MyMouseDoubleClick单独写为一个类文件,这种写法和命名内部类一样的优点,但是写一样单独的类文件要麻烦一点。
四、实现监听接口的写法
将HelloWorld类实现MouseListener接口,这样类本身就是一个监听器,使得加入监听器的代码可以更加的简单,这种方式适合加入监听器组件较多,并且要求监听器的事件处理代码可以被组件共用。因为实现MouseListener接口写的事件方法多,可以在没用到的事件方法进行空实现。还有特别注意的是事件方法和其他方法混合写在一起,容易产生误读,所以要在前面加上详细的注解说明
总结:
匿名内部类方式方便简单,但不适合代码多,逻辑复杂的情况。从代码书写,阅读,维护以及程序的可扩展性来看,命名内部类的写法最为推荐。外部类主要是为了代码重用才考虑使用。第四种方式要求组件可以共同使用事件代码时使用。
SWT组件添加事件的四种方式的更多相关文章
- Java添加事件的四种方式
Java添加事件的几种方式(转载了codebrother的文章,做了稍微的改动) /** * Java事件监听处理——自身类实现ActionListener接口,作为事件监听器 * * @author ...
- android点击事件的四种方式
android点击事件的四种方式 第一种方式:创建内部类实现点击事件 代码如下: package com.example.dail; import android.text.TextUtils; im ...
- jQuery绑定事件的四种方式:bind、live、delegate、on
1.jQuery操作DOM元素的绑定事件的四种方式 jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undele ...
- 给TextView添加超链接的四种方式
因为在上上篇博客中介绍了SpannableString的使用(SpannableString使用详解),由此想到给TextView添加超链接究竟有多少种方式?经过个人总结,现在一共发现四种,如果还有其 ...
- jQuery绑定事件的四种方式
jQuery提供了多种绑定事件的方式,每种方式各有其特点,明白了它们之间的异同点,有助于我们在写代码的时候进行正确的选择,从而写出优雅而容易维护的代码.下面我们来看下jQuery中绑定事件的方式都 ...
- jQuery 事件绑定四种方式,delegate委托强大绑定在3.0中修改为on
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- React组件绑定this的四种方式
题图 By HymChu From lnstagram 用react进行开发组件时,我们需要关注一下组件内部方法this的指向,react定义组件的方式有两种,一种为函数组件,一种为类组件,类组件内部 ...
- jQuery绑定事件的四种方式区别
jQuery中提供了四种事件监听方式,分别是bind.live.delegate.on,对应的解除监听的函数分别是unbind.die.undelegate.off.在开始看他们之前 一:bind(t ...
- GRpc添加客户端的四种方式
随着微服务的发展,相信越来越多的.net人员也开始接触GRpc这门技术,大家生成GRpc客户端的方式也各不相同,今天给大家介绍一下依据Proto文件生成Rpc客户端的四种方式 前提:需要安装4个Nug ...
随机推荐
- iscroll4 捕捉元素开发手机焦点图滑动效果
html标准代码格式 <div id="wrapper"> <div id="scroller" > <ul id="t ...
- 一起学习KenDo
这几年用Telerik做WEB,积累了一些感觉.因为打算涉足移动APP开发,打算接下来学习KenDo.
- java socket 通讯
(转)http://blog.csdn.net/xn4545945/article/details/8098646
- HTML5移动端图片上传模块
上传图片的功能是极为常用的,之前做过一个移动端上传文件的功能(基于jquery的),总结梳理一下. html <div class="uploadPic clearBox"& ...
- nginx 配置全站404(百度闭站保护)
在百度站长里申请闭站保护时,需要全站404.可能过nginx配置实现 location / { #root html; #index index.html index.htm; retur ...
- 使用ab进行压力测试
在Windows系统的命令行下,进入ab.exe程序所在目录,执行ab.exe程序.注意直接双击无法正确运行.
- Struts2框架之-Struts2的标签
Struts2包含哪些标签? 解答: A: <s:a href=”"></s:a>—–超链接,类似于html里的<a></a> <s:a ...
- yii + elasticsearch 手册
https://zhuowenji1.gitbooks.io/elasticsearch/content/an_zhuang_yii2.html
- asp.net core获取自定义json的配置内容
首先在主目录下建立:Iyibank.Web.json文件 里边的内容如下: { "ConnectionStrings": { "RedisCache": &qu ...
- maven更新远程仓库速度太慢解决方法
1.maven在更新下载jar包的时候,因为jar包默认是从国外服务器上下载的,所以速度特别慢 2.通过设置镜像的方法加快jar包下载 3.在maven安装目录下,/config/settings.x ...