当前位置:文档之家› 第8章Java的事件处理机制

第8章Java的事件处理机制

立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件监听器接口类
public void windowOpened(WindowEvent e){} public void windowClosed(WindowEvent e){} public void windowActivated(WindowEvent e){} public void windowDeactivated(WindowEvent e){} public void windowIconified(WindowEvent e){} public void windowDeiconified(WindowEvent e){} public void windowClosing(WindowEvent e){ System.exit(0); //终止程序的系统命令 } //入口方法中创建应用类的对象 public static void main(String args[]){ new Exa_8_4("Event Handle Demo-2"); } }
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件适配器类
【例】窗口中放置一个文本 区组件与一个按钮组件.两 类组件能够处理鼠标事件: 当鼠标在文本区中按下时, 文本区以红色字体显示鼠标 点击的位置坐标;当鼠标在 按钮中按下时,文本区以蓝 色字体显示鼠标点击的位置 坐标.窗口能够响应关闭操 作.
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件适配器类
由于WindowListener接口定义了七个抽象方法, 因此应用类需要全部实现这些方法.事实上,只 有响应关闭窗口事件的windowClosing()方法对 用户有意义,必须赋予其一定的功能,而其余的 六个方法不需编写任何代码,因此只需给出空的 方法体即可.对于诸如WindowListener这一类定 义有多个抽象方法的接口,在实际应用中只会用 到其中一小部分方法,其实对于这种情况,有更 好的解决方案,这就是事件适配器 .
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
GUI程序设计归根到底要完成两个层面的任务:
1 首先要完成程序外观界面的设计,其中包括创建窗体,在窗体 3 中添加菜单,工具栏及多种GUI组件,设置各类组件的大小, 位置,颜色等属性.这个层次的工作可以认为是对程序静态特 征的设置,在第七章中已经得到解决. 2 其次要为各种组件对象提供响应与处理不同事件的功能支持, 3 从而使程序具备与用户或外界事物交互的能力,使得程序"活" 了起来.这个层次的工作可以认为是对程序动态特征的处理
Java的事件类 及事件监听者接口类 Java事件适配器类 Java委托事件机制 内部类与匿名类实现事件监听 常用事件
#
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
本章知识难点
1 3
Java的各事件类及其对应监听者接口类
2 3
Java的适配器类
3
内部匿名类
4 3
鼠标事件,键盘事件及其它常用事件
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
Java的事件处理
欲使程序具备某类事件处理的功能,必须在程序原 有功能的基础上,增加至少三个方面的内容:
1 引入java.awt.event包中的所有事件类,方法是在类的定义 3 前面增加语句:import java.awt.event.*;. 2 定义专门用以处理特定事件的类,这些类可以定义为嵌套的 3 内部类,或者定义为与应用类并列的类.与此同时,这些类 必须在自己的类体内定义与特定事件对应的处理方法.
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
【例】将一个标明【Exit】的命令按钮放置在窗体下方. 点击该按钮,程序将结束运行,退回到系统状态.
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
import java.awt.*; import java.awt.event.*; //引入事件类 class Exa_8_3 extends Frame{ //在构造方法中将完成监听器的注册工作 public Exa_8_3(String title){ super(title); setLayout(null); Button btnExit=new Button("Exit"); //创建按钮 组件 ExitHandler handler=new ExitHandler(); //创建监 听器对象
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件监听器接口类
【例】使用WindowListener接口,实现关闭窗体的功能. import java.awt.*; import java.awt.event.*; //应用类自身实现WindowListener接口 class Exa_8_4 extends Frame implements WindowListener{ public Exa_8_4(String title){ super(title); addWindowListener(this); //将应用类的实例对象注册为窗口监听器 setSize(300,200); setBackground(Color.BLUE); setVisible(true);}
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
3 为处理特定事件的类定义一些实例对象,这些对象被称为特定 事件的监听器;然后通过addXXXListener()方法(此处的XXX代 表系统定义的特定事件类别),将事件监听器作为方法的参数, 注册给产生特定事件的那些组件.产生特定事件的组件,可能 为窗体容器对象,也可能为非容器的GUI对象,它们被称为事件 源.严格来讲,各类事件是由用户或计算机系统部件与事件源 组件交互作用时产生的,这些事件往往被封装成各类消息对象, 传递给事件监听器对象,监听器根据事件的类型,调用所属 类中定义的相应事件处理方法,最终完成对事件的响应.
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
Java的事件类
编写事件处理功能的程序时,必须导入语句 "import java.awt.event.*;". 根据事件的不同特征,将Java事件类分为低级事件 (Low—level Event)与语义事件(Semantic Event) .
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
btnExit.addActionListener(handler); //将监听器注册 给按钮对象 btnExit.setBounds(80,100,80,50); add(btnExit); setSize(240,200); setVisible(true); } //主方法中生成应用类的实例对象 public static void main(String args[]){ new Exa_8_3("Event-Handling Demo-1"); } }
Java的事件处理机制 第八章 Java的事件处理机制
目 录
重点与难点点拨 Java的事件处理 Java的事件处理 Java委托事件模型 Java委托事件模型 常见事件 经典练习题
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
本章知识重点
1 3 2 3 3 4 3 5 3
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件与事件驱动
图形用户界面的每个可能产生事件的组件被称为事件源,不 同事件源上发生的事件的种类不同.例如,Button对象引 发ActionEvent类代表的事件ACTION-PERFORMED; Checkbox对象等作为事件源可能引发ItemEvent类代表的 事件ITEM-STATE-CHANGES. 希望事件源上发生的事件被程序处理,就要把事件源注册给能 够处理该事件源上那种类型事件的监听者.例如Button对象把 自己注册给实现了ActionListener接口的对象,因为只有这种 对象能够处理Button对象上发生的ActionEvent类的事件,监听 者可以是包容事件源的容器,也可以是另外的对象.具体的注 册方法是通过调用事件源本身的相关方法,例如调用Button类 自身的addActionListener( )方法,并以监听者对象作为实际 参数来实现的
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件监听器接口类
凡是要处理ActionEvent事件的类都必须实现 ActionListener接口,实现ActionListener接口 就必须重载上述的actionPerformed()方法, 在重载的方法体中,通常需要调用参数e的有关 方法.例如调用e.getSource查明产生 ActionEvent事件的事件源,然后再采取相应的 措施处理该事件.
立体化教材计算机系列 —《Java程序设计》 程序设计》 《 程序设计
#
事件监听器接口类
比较特殊的情况有两个:一个是InputEvent类, 因为它不对应具体的事件,所以没有监听者与之 相对应;另一个是MouseEvent类,它有两个监听 者接口与之相对应,一个是MouseListener接口 (其中的方法可以响应MOUSE_CLICKED, MOUSE_ENTERED,MOUSE_EXITED,MOUSE_PRESSED, MOUSE_RELEASED五个具体事件),另一个是 MouseMotionListener接口(其中的方法可以响 应MOUSE_DRAGGED,MOUSE_MOVED的两个事件).
相关主题