当前课程知识点:Java程序设计 >  第七章 图形用户界面 >  7.6-事件处理的基本概念 >  事件处理的基本概念

返回《Java程序设计》慕课在线视频课程列表

事件处理的基本概念在线视频

事件处理的基本概念

下一节:事件派发机制

返回《Java程序设计》慕课在线视频列表

事件处理的基本概念课程教案、知识点、字幕

大家好

欢迎回来继续学习

Java语言程序设计

这一节我们来了解一下

事件处理的一些基本概念

我们知道GUI的程序呢

它都是事件驱动的

事件驱动是什么意思呢

就是我们看到的大多数程序

都是这样的

你打开这个程序

看到这个界面以后呢

它上面肯定有一些图形界面的组件

在那儿

那么如果你不动它呢

它也没什么反应

就在那儿等着

等着你去操作

你操作某些组件

因此就触发了一些事件

那么就会有响应代码

来对你的操作做出相应的反应

那么这种就是事件驱动的编程模式

这一节我们就来了解一下

这个事件处理的

基本的一些概念

在图形用户界面的程序中

常见的事件包括鼠标移动

单击双击鼠标的各个按纽

单击某些按纽

或者在文本字段中输入

在菜单中选择菜单项

在组合框中选择

还有单选 多选

拖动滚动条

关闭窗口等等

这些常见的操作

我想大家都是熟悉的

那么当你跟这些组件进行交互

你去操作它的时候呢

都会触发相应的事件

那么在Swing里面

是通过事件对象来包装事件的

程序可以通过事件对象

来获得这个事件的有关信息

获得了这些信息以后

对应的程序段才好根据得到的信息进行相应的处理

才可以响应这个事件

与事件处理相关的几个要素

包括事件源 事件监听器

还有事件对象

事件源就是与用户进行交互的

这些GUI的组件

表示事件来自于哪个组件或者是对象

比如说要对按纽被按下这个事件

编写事件处理器的话

那么按纽就是事件的源

那么什么是事件监听器呢

就是负责监听事件

并且做出响应的代码

一旦它监视到事件发生呢

就会自动调用相应的事件处理程序

去做出响应

事件对象呢

它封装了有关已经发生了什么事儿的

这些信息

比如说按纽被按下

就是一个要被处理的事件

那么当用户按下按纽的时候

就会产生一个事件对象

事件对象中就包含着

相关的信息和事件源

听起来这个事件处理机制

好像挺复杂的

程序是不是很难写呢

其实不是

写java程序的话

程序员只要关注两件事情就可以了

一个就是为事件源注册一个

事件监听器

第二个就是要写一段代码

来响应这个事件

在每个事件源上面

都有注册监听器

和取消注册的功能

一旦注册了监听器以后

如果有事件发生

已经注册的监听器呢就会被通知

一个事件源可以注册

多个事件监听器

而每个事件监听器

又可以对多种事件进行监听

比如一个JFrame事件源上面

我们可以注册好多个事件

比如说可以注册窗口事件监听器

去响应窗口关闭 最大化 最小化

还可以注册鼠标事件监听器

去响应鼠标的点击移动这些操作

那么事件监听器又是什么呢

事件监听器是一个对象

要通过事件源的add

什么什么Listener方法

来注册到这个事件源上面

不同的组件呢

是可以注册不同的事件监听器的

一个事件监听器中呢

也可以包含有对多种具体事件的

专用处理方法

比如说处理鼠标事件的监听器接口

MouseListener里面

就包含着对多种鼠标动作的响应

接下来我们再来看事件对象

这里列出来几种常用的事件对象

像ActionEvent

一般来说当你发生按下按纽

选择了一个项目

文本框中输入内容

并且打了一个回车呀

都会触发一个ActionEvnet

还有ItomEvent

比如说像CheckBox JComboBox

当你对它进行操作选择以后呢

就会触发一个ItomEvnet

就会产生这样一个事件对象

还有就是ChangeEvent

比如像一些这个Slider

一些拖曳的滑杆

还有一些进度条

如果它的状态改变的话

就会触发这个ChangeEvent

一个ChangeEvent对象就会产生

那么如果对窗口进行操作呢

就会触发这种窗口事件

就会产生WidowEvent对象

那鼠标操作呢

就会产生鼠标事件

那就会产生一个MouseEvent对象

接下来这个表中

就简要的列了一下

常见的事件源

以及这个事件源它对应的事件对象

它要触发的事件

以及相应的监听器

我们看到这个表中

简要的列了一下

列了一下的目的就是说

如果我们希望去用这些组件

希望去响应它的事件的时候

我们对它有一个大致的了解

当然如果你真的要去响应

这些事件

去注册这些事件监听器

去写事件响应代码的话呢

还是需要详细的去查阅API文档的

在这儿有这个简表呢

可以说对大家是一个提示

知道到API文档里面去查什么

对于这些内容呢

我们课里会有一些例题

涉及到一部分内容

但是不会仔细的每一个都讲

接下来我们如果希望

能够写事件响应程序的话呢

我们就要来了解一下

事件监听器接口

以及对应的适配器类

什么是事件监听器接口呢

比如说MouseListener就是一个接口

那里面规定了要响应鼠标事件

需要写哪些方法

把这些方法的原型都规定了

当然了接口中是没有方法体的

所以一个事件监听器接口

就是规定了要响应

某类事件的话

你必须要写什么样的响应方法

规定这个的

这就是事件监听器接口

另外为什么还要有这个

事件监听器的适配器类呢

我们仍然以这个

鼠标事件监听器为例

一个MouseListener接口里面

规定了五个方法

分别响应不同的鼠标动作

但是如果你在某个程序中

只想响应一种

唯一的鼠标动作

而其他的鼠标动作

你不打算响应的话

那怎么办呢

如果你实现了

MouseListener接口的话

你就必须把五个方法的方法体都实现

不然的话你是没办法产生实例的

而适配器呢

就是起来这个作用的

帮我们把那些方法体都实现了

然后你关注哪个方法体的特殊实现

你就去覆盖一下

这一个方法体就行了

接下来我们通过例子也会

给大家看一下

我们要编写事件处理程序

到底有几种途径呢

一种就是实现事件监听器接口

还有我们可以去扩展或者叫继承

那些实现了监听器接口的适配器类

另外就是我们可以用匿名的内部类

还有有的时候

我们可以用(λ)表达式

要实现事件监听器接口

就需要实现接口中的所有的方法

对于我们不需要进行处理的

事件的方法呢

也要列出它的方法体

哪怕这个方法体

就是一对空的大括号

那你也得写

那么如果这个事件监听器

它有相应的适配器类

那这个时候我们去继承适配器类

就不用管那些

我们不介意的方法

只需要覆盖我们感兴趣的

事件处理方法就可以了

如果我们的类已经扩展了

或者继承了某个超类

那这个时候我们就没有机会

再去继承事件监听器的适配器类了

这种情况下怎么办呢

我们还可以使用匿名的内部类

来作为一种弥补

如果一个事件监听器

它只有一个抽象方法

那么就是一个函数式的监听器接口

这个时候我们就可以用λ表达式

关于λ表达式

我们在这门课中

不做详细的介绍

但是这儿只是给大家

这么一个提示

如果大家愿意的话

可以去另外的查阅相关的资料

接下来我们就通过一个

具体的简单的例子

来体验一下什么是事件响应

这个例子呢

首先它显示一个窗口

然后当我们的鼠标在窗口中

移到某个地方

然后点击的时候

这个窗口的标记栏里面

就显示当前点击的时候的

鼠标的坐标位置

接下来我们就通过三种方式

来实现这个功能

第一种方法就是实现

MouseListener接口

第二种方法是继承MouseAdapter类

第三种方法就是使用匿名的内部类

首先我们来看一下

实现MouseListener接口

我们看我们这个类

实现了这个鼠标监听器接口

在这个鼠标监听器类里面呢

声明了五个响应鼠标操作的方法

都是没有方法体的

那我们实现它呢

就要把这五个方法的方法体都实现

但是我们实际上只关注

mouseClick的事件

对其他的事件

我们不想给出任何反应

那怎么办

那你也不能置之不理

大家看这四个方法

都写了空方法体

这个逻辑很简单

我们把这个实现了MouseListener的

当前对象作为事件监听器注册上去

那么如果点了鼠标的话

就会有这个mouseClick的方法

来响应显示这个坐标点的位置

可是看这个程序有点别扭

我们不关注的动作呢

也要写这个空方法体在这儿

显然是太罗嗦了

再看这个方案呢

就是去继承或者去扩展这个

MouseAdapter类

这是一个适配器类

那么这个适配器到底干了什么呢

其实这个适配器

就是替我们把它接口中的

一些方法

都实现为空方法体了

所以其他部分是一样的

只是在这儿

我们只需要覆盖mouseClick的方法

就行了

对于其他的方法

我们不用再去写空方法体了

因为在MouseAdapter里面

帮我们把空方法体都写好了

这样这个程序就显得简洁一些

如果说我们不想去继承

一个适配器类

那我们还有另外一种选择

就是使用这个匿名的内部类

就在这儿注册监听器的时候

注册监听器的时候

这是需要一个监听器对象的

是需要一个实现了

监听器接口的

或者继承了鼠标事件监听器

适配器类的对象

放在这儿

所以我们就在这儿构造一个

匿名内部类的对象

new一个什么呢

new一个继承了MouseAdapter的

类的对象

这个匿名内部类

它继承了MouseAdapter

同时在里面我们看到

它去覆盖了这个mouseClick的方法

而其他的方法都没有管它

这个类就用这一次

就在这儿注册监听器的时候要用

要构造这个类的对象作为监听器

所以就不用给它名字

这个就是使用匿名内部类的办法

这三种方法呢

得到的效果都是一样的

不管我们运行哪个程序

得到的效果都是

我们将鼠标点在这个窗口中

某个位置的时候

它这个标题栏上

就会显示鼠标点击时候的

这个坐标位置

在这一节我们初步了解了一下

事件处理的一些基本的概念

了解了事件源

事件监听器 事件对象这些要素

也通过一个简单的例子

了解了我们写事件响应程序

可以有哪些基本的方法

好 这一节内容就是这样

Java程序设计课程列表:

第一章 Java语言基础知识

-1.0-导学

--1.0-导学

--JDK的安装与配置01

--JDK的安装与配置02

--JDK的安装与配置03

--编辑并执行第一个java程序01

--编辑并执行第一个java程序02

--编辑并执行第一个java程序03

--eclipse的安装和配置01

--eclipse的安装和配置02

--eclipse的安装和配置03

--使用eclipse进行Java的开发01

--使用eclipse进行Java的开发02

--使用eclipse进行Java的开发03

-1.1-Java与面向对象程序设计简介

--1.1.1 Java与面向对象程序设计简介

--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介

-1.2-基本数据类型与表达式

--1.2.1-基本数据类型与表达式

-第一章 Java语言基础知识--1.2-基本数据类型与表达式

-1.3-数组

--1.3.1-数组

-第一章 Java语言基础知识--1.3-数组

-1.4-算法的流程控制

--1.4.1-算法的流程控制

--第一章 Java语言基础知识--1.4-算法的流程控制

-1.5-第一章小结

--1.5.1-第一章小结

-第一章编程练习题

-课件

--外部链接

第一章续-习题讲解视频

-Java环境配置、Eclipse使用、Helloworld程序详解

--JAVA的安装和配置

--编写并执行第一个Java程序及Java的跨平台性

--eclipse的安装和配置

--使用eclipse建立Java项目、编写和运行Java程序

--Java注释和Eclipse中的注释操作

--详解HelloWorld程序

-Java数据类型

--Java数据类型介绍

--Java整数类型

--Java浮点类型

--Java字符类型和布尔类型

--数据类型实战

--数据类型转换

--Java强制类型转换精度损失示例与表达式中的数据类型转换

-Java数组

--Java数组介绍、声明与使用

--一维数组的初始化与length属性

--数组索引的原理与使用

--二维数组的介绍与使用

-Java变量

--Java的变量

-命令行参数

--命令行参数的介绍

第二章 类与对象

-2.0-导学

--2.0-导学

-2.1-面向对象方法的特性

--2.1-面向对象方法的特性

--第二章 类与对象--2.1-面向对象方法的特性

-2.2-1-类声明与对象创建

--2.2-1-类声明与对象创建

--第二章 类与对象--2.2-1-类声明与对象创建

-2.2-2-数据成员

--2.2-2-数据成员

--第二章 类与对象--2.2-2-数据成员

-2.2-3-方法成员

--2.2-3-方法成员

--第二章 类与对象--2.2-3-方法成员

-2.2-4-包

--2.2-4-包

--第二章 类与对象--2.2-4-包

-2.2-5-类的访问权限控制

--2.2-5-类的访问权限控制

--第二章 类与对象--2.2-5-类的访问权限控制

-2.3-1-对象初始化

--2.3-1-对象初始化

--第二章 类与对象--2.3-1-对象初始化

-2.3-2-内存回收

--2.3-2-内存回收

--第二章 类与对象--2.3-2-内存回收

-2.4-枚举类

--2.4-枚举类

--第二章 类与对象--2.4-枚举类

-2.5-应用举例

--2.5-应用举例

-2.6-第2章小结

--2.6-第2章小结

-第二章编程练习题

-课件

--第二章课件

第三章 类的重用

-3.0-导学

--3.0-导学

-3.1.1-3.1.2-类继承的概念和语法

--3.1.1-3.1.2-类继承的概念和语法

--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法

-3.1.3-隐藏和覆盖

--3.1.3-隐藏和覆盖

--第三章 类的重用--3.1.3-隐藏和覆盖

-3.2-Object 类

--3.2-Object 类

--第三章 类的重用--3.2-Object 类

-3.3-终结类与终结方法

--3.3-终结类与终结方法

--第三章 类的重用--3.3-终结类与终结方法

-3.4-抽象类

--3.4-抽象类

--第三章 类的重用--3.4-抽象类

-3.5-泛型

--3.5-泛型

--第三章 类的重用--3.5-泛型

-3.6-类的组合

--3.6-类的组合

-3.7-小结

--3.7-小结

-第三章编程练习题

-课件

--课件

第四章 接口与多态

-4.0-导学

--导学

-4.1-接口

--接口

--第四章 接口与多态--4.1-接口

-4.2.1-4.2.2-类型转换

--类型转换

--第四章 接口与多态--4.2.1-4.2.2-类型转换

-4.2.3-方法的查找

--方法的查找

--第四章 接口与多态--4.2.3-方法的查找

-4.3-多态的概念

--多态的概念

--第四章 接口与多态--4.3-多态的概念

-4.4-多态的应用举例

--多态的应用举例

--第四章 接口与多态--4.4-多态的应用举例

-4.5-构造方法与多态性

--构造方法和多态性

--第四章 接口与多态--4.5-构造方法与多态性

-4.6-本章小结

--本章小结

-第四章编程作业

-课件

--课件

第五章 输入输出

-5.0-导学

--5.0-导学

-5.1.1-5.1.2-异常处理的概念

--5.1.1-5.1.2-异常处理的概念

--第五章 输入输出--5.1.1-5.1.2-异常处理的概念

-5.1.3-5.1.5-异常的处理

--5.1.3-5.1.5-异常的处理

--第五章 输入输出--5.1.3-5.1.5-异常的处理

-5.2-输入输出流的概念

--输入输出流的概念

--第五章 输入输出--5.2-输入输出流的概念

-5.3.1-写文本文件

--写文本文件

--第五章 输入输出--5.3.1-写文本文件

-5.3.2-读文本文件

--读文本文件

--第五章 输入输出--5.3.2-读文本文件

-5.3.3-写二进制文件

--写二进制文件

--第五章 输入输出--5.3.3-写二进制文件

-5.3.4-读二进制文件

--读二进制文件

-5.3.5-File类

--File类

-5.3.6-处理压缩文件

--处理压缩文件

-5.3.7-对象序列化

--对象序列化

-5.3.8-随机文件读写

--随机文件读写

-5.4-本章小结

--本章小结

-课件

--课件

第六章 对象群体的组织

-6.0-导学

--导学

-6.1-Java集合框架介绍

--Java集合框架介绍

--第六章 对象群体的组织--6.1-Java集合框架介绍

-6.2-主要接口及常用的实现类

--6.2-主要接口及常用的实现类

--第六章 对象群体的组织--6.2-主要接口及常用的实现类

-6.3-常用算法

--常用算法

-6.4-数组实用方法

--6.4-数组实用方法

-6.5-基于动态数组的类型(Vector, ArrayList)

--基于动态数组的类型(Vector, ArrayList)

-6.6-遍历Collection

--遍历Collection

-6.7-Map接口及其实现

--Map接口及其实现

-6.8-第6章小结

--第6章小结

-课件

--课件

第七章 图形用户界面

-7.0-导学

--导学

-7.1-绘图

--绘图

-7.2-Swing基础

--Swing基础

-7.3-Swing的层次

--Swing的层次

-7.4-布局管理

--布局管理

-7.5-内部类

--内部类

-7.6-事件处理的基本概念

--事件处理的基本概念

-7.7-事件派发机制

--事件派发机制

-7.8-顶层容器

--7.8-顶层容器

-7.9-中间层容器(一)

--7.9-中间层容器(一)

-7.10-中间层容器(二)

--7.10-中间层容器(二)

-7.11-原子组件(一)

--7.11-原子组件(一)

-7.12-原子组件(二)

--7.12-原子组件(二)

-7.13-原子组件(三)

--7.13-原子组件(三)

-7.14-其它Swing特性

--7.14-其它Swing特性

-7.15-第7章小结

--7.15-第7章小结

-课件

--课件

事件处理的基本概念笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。