• SWT组件添加事件的四种方式


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

    一、匿名内部类的写法


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

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

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

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

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

    二、命名内部类写法

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

    三、外部类写法

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

    四、实现监听接口的写法

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

    总结:

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

    -------------------- END ---------------------

     

    最后附上作者的微信公众号地址和博客地址 

    Herrt灬凌夜:

    https://www.cnblogs.com/wuyx/

    版权说明:欢迎以任何方式进行转载,但请在转载后注明出处!

  • 相关阅读:
    pycharm快捷键
    Java线程的生命周期
    Java中的管程
    Java并发编程之入门
    Linux系统监控命令
    RT-Thread 搜集一些其他博主的博客以备学习
    late_initcall 替换 module_init
    去掉行尾的^M
    ST3 C程序自动补全
    MinGW-W64 编译 LLVM 与 Clang
  • 原文地址:https://www.cnblogs.com/wuyx/p/6122509.html
Copyright © 2020-2023  润新知