Java事件处理机制和适配器全面解析

作者:tuke_tuke 时间:2021-10-23 04:19:32 

Java事件处理机制和适配器

最重要的是理解事件源监视器处理事件的接口的概念。

1.事件源:是能够产生时间的对象都可以叫事件源,比如文本框,按钮,下拉列表之类的组件。

2.监视器:事件源要产生事件,必须要有什么东西去监视它,以便作出相应啊,那就是监视器,监视器的作用是对事件源进行监视,以便对发生的时间进行处理。

事件源通过相应的方法注册自己的 * 。比如addListener( * );

3.处理事件的接口:监视器负责处理事件源发生的事件,监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用一个方法来处理事件。被调用的这个方法就是所说的处理事件的接口中的方法。

java规定监视器这个对象的类必须声明实现相应的接口, 即必须在类体重重写接口中的所有方法,当事件源发生事件事件时,监视器就会自动调用被类重写的接口方法。

处理事件示意图

Java事件处理机制和适配器全面解析

java常用的监听接口

Java事件处理机制和适配器全面解析

此外还有MouseMotionListener,MouseWheelListener,WindowFocusListener, WindowStateListener,监听接口。

有时候监听接口中有很多抽象方法,在实现接口的时候,需要重写所有的方法,但是我们经常只会用到其中的一个或两个,这无疑是一种劳累,多余。

于是就有了适配器类,出于简化的目的,每个还有多个方法的的 * 接口都配有一个适配器类,这个类实现了接口中的所有方法,但是每个方法没有做任何事情。

比如:

FocusAdapter,KeyAdapter,MouseAdapter,MouseMotionAdapter, WindowAdapter.

这就提供另一种方法,就是继承适配器类,重写其中的需要使用的方法,不必重写全部的方法,简单方便。


class A extends WindowAdapter{
  pubilc void windowClosing(WinwEvent e){//重写WindowAdapter中的方法
       //处理时间代码
  }
}

Java事件适配器的作用

适配器

其实从接口事件演变尔来的。相当于触发器,说简单点,它就是一些动作 。

例如说 鼠标的按下 点击 还有键盘 等等。 适配器 就是实现 接口事件的类 不过 ,不是真的实现 ,只是空实现 ,没有具体的方法体。 适配器主要是为了方便程序员操作 ,避免了代码的重复性。只要一个对象或者属性添加了这个适配器, 那么它就会监视这对象或属性 。例如说一个按纽。

按纽添加一个MouseAdapter适配器, 并重写里面的mouseClicked(MouseEvent e)方法。


public void mouseClicked(MouseEvent e)
{
System.out.println("你点击了鼠标");
}

当你点击按纽时 后台就是打印 “你点击了鼠标”. 再说明白点 就相当你给按纽 添加了一个鼠标对象。 你通过 鼠标 就可以 产生对应的动作!

MouseAdapter实现了MouseListener,MouseWheelListener,MouseMotionListener接口,而方法都是为空,你可以重写mouseClicked(MouseEvent e) 方法从而响应鼠标按键在组件上单击事件,重写mouseDragged(MouseEvent e)方法从而响应鼠标按键在组件上按下并拖动事件等等。

来源:https://blog.csdn.net/tuke_tuke/article/details/46984639

标签:Java,事件处理机制,适配器
0
投稿

猜你喜欢

  • 详解Spring框架入门

    2023-08-14 12:56:14
  • Java基础学习之ArrayList类概述与常用方法

    2023-03-13 02:15:24
  • Java中使用内存映射实现大文件上传实例

    2022-01-16 05:02:16
  • 基于Transactional事务的使用以及注意说明

    2022-02-24 12:23:08
  • SpringBoot配置拦 截器实现过程详解

    2023-11-24 17:14:58
  • Java 8 动态类型语言Lambda表达式实现原理解析

    2023-08-05 09:04:25
  • SpringBoot Entity中枚举类型详细使用介绍

    2023-11-11 00:30:52
  • Java并发编程面试之线程池

    2023-11-11 10:58:33
  • IDEA SpringBoot项目配置热更新的步骤详解(无需每次手动重启服务器)

    2023-11-12 00:22:41
  • SpringBoot中Jackson日期格式化技巧分享

    2022-05-21 01:40:24
  • Java设计模式的事件模型详解

    2023-11-29 04:47:08
  • Java编程经典小游戏设计-打砖块小游戏源码

    2021-07-08 01:17:28
  • Flutter中嵌入Android 原生TextView实例教程

    2023-07-05 02:02:00
  • 解析Spring Mvc Long类型精度丢失问题

    2021-11-06 12:27:37
  • Java7之forkjoin简介_动力节点Java学院整理

    2023-08-31 14:08:28
  • Java并发编程之详解CyclicBarrier线程同步

    2023-08-01 14:08:47
  • 简单捋捋@RequestParam 和 @RequestBody的使用

    2022-11-02 16:19:20
  • SpringBoot下使用MyBatis-Puls代码生成器的方法

    2023-11-25 17:07:07
  • java中方法递归的简单示例

    2022-11-25 11:45:12
  • 详解java为什么不允许类多重继承却允许接口多重继承

    2022-12-26 03:25:57
  • asp之家 软件编程 m.aspxhome.com