Java语言程序设计-15-事件驱动程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java语言程序设计
海南大学信息科学技术学院
台安
2
第十五章事件驱动程序设计
Ø
学习目标
n 介绍事件、事件源和事件类
n 定义处理器类、注册处理器、实现处理器方法来处理事件n 使用内部类定义处理器n 使用匿名类定义处理器
n 使用lambda 表达式定义处理器n
掌握编写程序来处理常见的事件
l 处理窗口事件l 处理鼠标事件l
处理键盘事件
3
目录
Ø15.1 事件概述Ø15.2 事件模型组件Ø15.3 事件处理器
Ø15.4 事件处理一般步骤Ø15.5 内部类Ø15.6 匿名类
Ø15.7 lambda 表达式Ø
15.8 常见事件处理
4
15.1 事件概述
Ø
事件的定义
n
日常生活中,事件是指事件的主体在一些外部因素的驱动下,其状态或行为发生了变化,需要对其作出处理。
l
比如:电话铃响、门被叩响、汽车启动等都是事件
n
计算机世界中,事件是用户通过输入设备(如:鼠标、键盘等)在程序界面上进行的操作(如点击按钮、移动鼠标、按下一个键等),或者是一个系统事件,如时钟到达。
5
Ø
事件驱动程序设计
n
用户对GUI (Graphical User Interface )控件进行操作产生事件,GUI 程序监听事件,并驱动相应的类的实例来处理事件,这个过程称为事件驱动过
程。
界面
GUI 程序
处理器处理器处理器①触发事件
②处理事件
③响应事件
④反馈事件
用户
6
Ø
事件处理机制
n
事件:Java 语言将每一个键盘或鼠标的操作定义为一个“事件”。
n
事件响应:当事件发生时程序应该作出何种响应。
当用户点击了一个按钮,意味着一个按钮事件的发生。
事件处理方法对该事件进行响应
7
15.2 事件模型组件
Ø
事件的构成(三要素):
n
谁产生事件
n
产生什么事件,事件的内容是什么
l
比如:谁发出的、在什么位置发生的、什么时间发生的等
n
谁来处理该事件
8
Ø
事件的构成
n
以“用户点击按钮”事件来说明事件三要素:
GUI 界面
事件源button
②创建
Java 运行时系统
事件对象
事件处理对象(处理器)
③传递
④回馈
①点击
9
事件三要素
事件(Event)三要素:
Ø事件源(Sorce Object ):产生事件的组件叫事件源
Ø事件对象(Event Object ):包含与事件相关的属性的对象n 包含的信息有:事件源对象、位置、时间等
Ø
事件处理器(handler ):对事件进行处理的对象,包含处理该事件的方法
事件源对象
JVM 产生事件(类)对象
JVM 传递事件对象给相关的处理器
用户产生事件
10
Java 事件类
Ø
Java 有20多个预定义的事件类,它们包含了所有组件上可能
发生的事件。
JavaFX 的事件类的根类是javafx.event.Event
11
事件接口与事件处理方法
Ø每一个事件都有一个相应的事件接口,事件接口中的事件处理方法完成对事件的处理
class OKHandlerClass implements EventHandler
public void handle (ActionEvent e) {
System.out.println("OK button clicked");
}
}
OKHandlerClass handler1 = new OKHandlerClass();按钮的事件
事件处理方法事件接口
12
15.3 事件处理器
Ø
一个对象若要成为事件处理器,必须满足条件:n 事件处理器必须是一个对应事件处理接口的实例n 事件处理器必须向事件源注册
class OKHandlerClass implements EventHandler
public void handle (ActionEvent e) {
System.out.println("OK button clicked");
}
}
OKHandlerClass handler1 = new OKHandlerClass();
btOK.setOnAction(handler1);按钮的事件是对应事件处理
接口的一个实例
①
②①②向事件源注册
13
Ø外部用户动作导致一个事件源触发一个事件,事件注册方法用于注册该事件类型
的处理器。
14
Ø外部用户动作导致一个事件源触发一个事件,事件注册方法用于注册该事件类型的处理器。
•不同的事件源类型,产生的事件类型以及事件注册方法也可能会不一样