Java高级程序设计
Java高 级 程序 设计
? 第一部分
– 第一章 Java入门基础
– 第二章 异常
– 第三章 Java Applet类型
– 第四章 图形用户界面 GUI(一) ——AWT
– 第五章 Java中的事件处理机制
– 第六章 图形用户界面 GUI(二) ——Swing
Java高 级 程序 设计
– 第七章 多线程
– 第八章 I/O输入输出流
– 第九章 Java数据库连接( JDBC)
– 第十章 Java网络编程
? 第二部分
– 第一章 Java API
– 第二章 Java与多媒体
– 第三章 Java Bean基础
Java中的事件处理机制Java高 级 程序 设计
第五章
Java中的事件处理机制
? 5.1 事件与事件处理
? 5.2 授权事件模型
? 5.3 事件类及其处理
? 5.4 事件适配器
? 5.5 事件处理的多重运用
Java中的事件处理机制Java高 级 程序 设计
5.1 事件与事件处理
? 事件与事件处理:
– 事件处理的 3要素:
? 事件源:产生事件的组件
? 事件(对象):用户对组件的操作所触发的事件对象
? 事件监听器:负责处理事件的对象,也可称为事件处理
器
– Java的事件类和监听器接口大多在 java,awt,event包中,
一些 Swing组件所特有的事件监听器接口则在 javax,
swing,event中声明
Java中的事件处理机制Java高 级 程序 设计
5.1 事件与事件处理
--常用事件类层次图
常用事件类层次图
Java中的事件处理机制Java高 级 程序 设计
5.2 授权事件模型
? 授权事件模型:
– 采用授权事件模型进行事件处理的一般步骤为:
? 第一 确定 Event Source,知道什么组件要被处理
? 第二 确定 Event,知道什么样的事件要被处理
? 第三 实现 Event Listener,即编写实现 Event Listener的
事件处理代码
– 在此过程中,我们需要将事件监听器对象与事件
源的某种事件关联起来,这个关联的过程称为向
事件源注册( Registering)事件监听器。
Java中的事件处理机制Java高 级 程序 设计
5.2 授权事件模型
--模型图
授权事件模型图
Java中的事件处理机制Java高 级 程序 设计
5.3 事件类及其处理
? 5.3.1 ActionEvent类
? 5.3.2 AdjustmentEvent类
? 5.3.3 ComponentEvent类
? 5.3.4 FocusEvent类
? 5.3.5 ItemEvent类
? 5.3.6 MouseEvent类
? 5.3.7 KeyEvent类
? 5.3.8 TextEvent类
? 5.3.9 WindowEvent类
Java中的事件处理机制Java高 级 程序 设计
5.3.1 ActionEvent类
? ActionEvent类对应一个动作事件,如点击按钮、选择菜单
项、单行文本框中输入字符串并按下回车键等等,都可看
作是 ActionEvent类的事件。
? 可能产生 ActionEvent事件的 AWT组件主要有,Button、
TextField,MenuItem,List
? ActionEvent类对应的监听器接口是 ActionListener,事件
源使用 addActionListener(ActionListener listener)方法
来注册事件该类事件的监听器。
Java中的事件处理机制Java高 级 程序 设计
ActionEvent
? ActionEvent类常用方法:
– public String getActionCommand( )
– public Object getSource( )
? 处理 ActionEvent事件的监听器接口是 ActionListener,
其中只包含一个方法:
– public void actionPerformed(ActionEvent e)
– 当 ActionEvent事件发生时该方法被调用,重写该方法对
ActionEvent事件进行处理
Java中的事件处理机制Java高 级 程序 设计
事件处理代码编写方式
? 编写事件处理代码的 3种常用的方式:
– 1,直接在 GUI组件所在的类中实现监听器接口,必须在类定义时用
implements声明要实现哪些接口,并在类中实现这些接口的所有抽
象方法
– 2,实现 GUI的类和实现事件处理的监听器类分别定义,专门定义监
听器类来实现某种监听器接口以对某种事件进行处理。可以用一个
监听器类实现对多个可能产生同类型事件的组件进行监听和处理
– 3,用 Inner class的特殊形式 —— 匿名类来实现监听器,在向组件注
册监听器时,直接用 new创建一个实现了监听器接口的匿名类的对
象,实现其抽象方法对组件上的事件进行处理
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.2 AdjustmentEvent类
? AdjustmentEvent事件由实现了 Adjustable接口的对象引发,比如在
Scrollbar和 SrollPane对象上调整滚动值(通过拖动滑块、点击滚动条上的
箭头或点击滚动条的空白区域)时,就会引发 AdjustmentEvent事件。
? AdjustmentEvent类常用方法:
– public int getValue( )
– public int getAdjustmentType( )
? 处理 AdjustmentEvent事件的接口是 AdjustmentListener,其中只包含一个
方法:
– public void adjustmentValueChanged(AdjustmentEvent e)
– 当滚动条当前值发生改变时调用该方法 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.3 ComponentEvent类
? ComponentEvent类是所有组件级事件的根事件类,它是以下事
件类的父类,ContainerEvent,FocusEvent,InputEvent,
PaintEvent,WindowEvent。
? 当 GUI上的组件发生位置移动或改变大小时产生该类的事件,但
ComponentEvent类仅仅为了提示的目的而存在,因为 AWT内部
将自动处理组件的移动和调整大小,不论程序是否接收到这些
ComponentEvent事件 GUI的布局都会正常工作。
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.4 FocusEvent类
? FocusEvent类是组件上的焦点事件类,当组件获得或失去焦点
( focus)时,都会产生该事件。
? 所有的组件都能产生 FocusEvent事件,比较常见的是 TextField和
Button上的焦点事件。
? 处理 FocusEvent事件,需要实现 FocusListener接口,其中包含 2个
方法:
– public void focusGained(FocusEvent e)
在组件获得 focus时被调用
– public void focusLost(FocusEvent e)
在组件失去 focus时被调用。 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.5 ItemEvent类
? ItemEvent类事件是发生在具有项目选择功能组件上的,比如,选中 List
或 Choice中的选项,或是改变了 Checkbox的状态时,就会引发
ItemEvent事件。
? ItemEvent类常用方法:
– public Object getItem( )
– public int getStateChange( )
? 处理 ItemEvent事件,需要实现 ItemListener接口,其中包含 1个方法:
– public void itemStateChanged(ItemEvent e)
– 当选项的选择状态发生改变时被调用
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
? MouseEvent事件是用户使用鼠标在某个组件上进行某种动作
时产生的事件,比如鼠标单击组件、鼠标移入组件区域、鼠标
移出组件区域等等都会发生 MouseEvent事件。
? MouseEvent类常用方法:
– public int getClickCount( )
– public Point getPoint( )
– public int getX( )
– public int getY( )
– public int getButton( )
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
--MouseListener
? 与 MouseEvent事件对应的监听器接口有 2个:
MouseListener 和 MouseMotionListener
? MouseListener接口主要处理鼠标单击、按下、释放、移入组件和移
出组件的事件,该接口包含 5个方法:
– void mouseClicked(MouseEvent e)
– void mousePressed(MouseEvent e)
– void mouseReleased(MouseEvent e)
– void mouseEntered(MouseEvent e)
– void mouseExited(MouseEvent e)
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
--MouseMotionListener
? MouseMotionListener:
– MouseMotionListener接口负责处理鼠标的拖放和移动
事件,该接口包含 2个方法:
? void mouseDragged(MouseEvent e)
? void mouseMoved(MouseEvent e)
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.7 KeyEvent类
? KeyEvent事件是与键盘相关的事件,当 KeyEvent事件的事件
源处于激活状态时,按下、释放或敲击键盘上的某个键会引发
KeyEvent事件。
? KeyEvent类常用方法:
– public char getKeyChar( )
– public int getKeyCode( )
– public static String getKeyText(int keyCode)
– public boolean isActioinKey( )
Java中的事件处理机制Java高 级 程序 设计
5.3.7 KeyEvent类
--KeyListener
? KeyListener:
– 处理 KeyEvent事件的监听器接口是 KeyListener,其中
包含 3个方法,
? void keyTyped(KeyEvent e)
? void keyPressed(KeyEvent e)
? void keyReleased(KeyEvent e)
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.8 TextEvent类
? TextEvent事件发生在文本组件中的字符串发生改变时。
? 前面介绍的 ActionEvent事件也可以发生 TextField上,但
它产生的时机是输入文本并按下 Enter键之后,TextEvent
事件是在向 TextField输入字符串而还未按下 Enter键时就
会引发的事件。
? 处理 TextEvent事件的监听器接口是 TextListener,该接口
中只包含 1个方法:
– void textValueChanged(TextEvent e) 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.9 WindowEvent类
? WindowEvent事件是发生在窗口对象上的事件,当用户或应用程序
在打开、关闭、最大或最小化窗口等时发生 WindowEvent事件。
? 处理 WindowEvent事件需要实现 WindowListener接口,其中包含 7个
方法:
– void windowOpened(WindowEvent e)
– void windowClosing(WindowEvent e)
– void windowClosed(WindowEvent e)
– void windowIconified(WindowEvent e)
– void windowDeiconified(WindowEvent e)
– void windowActivated(WindowEvent e)
– void windowDeactivated(WindowEvent e) 返 回
Java中的事件处理机制Java高 级 程序 设计
5.4 事件适配器
? 事件适配器:
– 采用实现事件监听器接口的方式编写事件处理代码时,
必须重写监听器接口中的所有方法,尽管有些方法不会
用到。
– 事件适配器类
? 是已经实现了相应监听器接口的类,只不过方法体为空
? 采用继承事件适配器类的方式编写事件处理代码时,只
需要重写必要的方法即可
Java中的事件处理机制Java高 级 程序 设计
5.5 事件处理的多重运用
? 事件处理的多重运用:
– 有时,用户在 GUI上的操作可能触发了不止一个事件源
的事件;也有时,一个事件源上产生了不同类型事件。
针对这种情况,应根据需求具体问题具体对待,如有必
要可对这些事件分别注册监听器来进行处理。
Java中的事件处理机制Java高 级 程序 设计
第五章
小 结
? 本章小结:
– 本章主要介绍了事件的概念,事件处理机制,授权事件
模型
– 常见的事件事件类及其对应的监听器接口
– 事件处理代码的编写方式
Java高 级 程序 设计
? 第一部分
– 第一章 Java入门基础
– 第二章 异常
– 第三章 Java Applet类型
– 第四章 图形用户界面 GUI(一) ——AWT
– 第五章 Java中的事件处理机制
– 第六章 图形用户界面 GUI(二) ——Swing
Java高 级 程序 设计
– 第七章 多线程
– 第八章 I/O输入输出流
– 第九章 Java数据库连接( JDBC)
– 第十章 Java网络编程
? 第二部分
– 第一章 Java API
– 第二章 Java与多媒体
– 第三章 Java Bean基础
Java中的事件处理机制Java高 级 程序 设计
第五章
Java中的事件处理机制
? 5.1 事件与事件处理
? 5.2 授权事件模型
? 5.3 事件类及其处理
? 5.4 事件适配器
? 5.5 事件处理的多重运用
Java中的事件处理机制Java高 级 程序 设计
5.1 事件与事件处理
? 事件与事件处理:
– 事件处理的 3要素:
? 事件源:产生事件的组件
? 事件(对象):用户对组件的操作所触发的事件对象
? 事件监听器:负责处理事件的对象,也可称为事件处理
器
– Java的事件类和监听器接口大多在 java,awt,event包中,
一些 Swing组件所特有的事件监听器接口则在 javax,
swing,event中声明
Java中的事件处理机制Java高 级 程序 设计
5.1 事件与事件处理
--常用事件类层次图
常用事件类层次图
Java中的事件处理机制Java高 级 程序 设计
5.2 授权事件模型
? 授权事件模型:
– 采用授权事件模型进行事件处理的一般步骤为:
? 第一 确定 Event Source,知道什么组件要被处理
? 第二 确定 Event,知道什么样的事件要被处理
? 第三 实现 Event Listener,即编写实现 Event Listener的
事件处理代码
– 在此过程中,我们需要将事件监听器对象与事件
源的某种事件关联起来,这个关联的过程称为向
事件源注册( Registering)事件监听器。
Java中的事件处理机制Java高 级 程序 设计
5.2 授权事件模型
--模型图
授权事件模型图
Java中的事件处理机制Java高 级 程序 设计
5.3 事件类及其处理
? 5.3.1 ActionEvent类
? 5.3.2 AdjustmentEvent类
? 5.3.3 ComponentEvent类
? 5.3.4 FocusEvent类
? 5.3.5 ItemEvent类
? 5.3.6 MouseEvent类
? 5.3.7 KeyEvent类
? 5.3.8 TextEvent类
? 5.3.9 WindowEvent类
Java中的事件处理机制Java高 级 程序 设计
5.3.1 ActionEvent类
? ActionEvent类对应一个动作事件,如点击按钮、选择菜单
项、单行文本框中输入字符串并按下回车键等等,都可看
作是 ActionEvent类的事件。
? 可能产生 ActionEvent事件的 AWT组件主要有,Button、
TextField,MenuItem,List
? ActionEvent类对应的监听器接口是 ActionListener,事件
源使用 addActionListener(ActionListener listener)方法
来注册事件该类事件的监听器。
Java中的事件处理机制Java高 级 程序 设计
ActionEvent
? ActionEvent类常用方法:
– public String getActionCommand( )
– public Object getSource( )
? 处理 ActionEvent事件的监听器接口是 ActionListener,
其中只包含一个方法:
– public void actionPerformed(ActionEvent e)
– 当 ActionEvent事件发生时该方法被调用,重写该方法对
ActionEvent事件进行处理
Java中的事件处理机制Java高 级 程序 设计
事件处理代码编写方式
? 编写事件处理代码的 3种常用的方式:
– 1,直接在 GUI组件所在的类中实现监听器接口,必须在类定义时用
implements声明要实现哪些接口,并在类中实现这些接口的所有抽
象方法
– 2,实现 GUI的类和实现事件处理的监听器类分别定义,专门定义监
听器类来实现某种监听器接口以对某种事件进行处理。可以用一个
监听器类实现对多个可能产生同类型事件的组件进行监听和处理
– 3,用 Inner class的特殊形式 —— 匿名类来实现监听器,在向组件注
册监听器时,直接用 new创建一个实现了监听器接口的匿名类的对
象,实现其抽象方法对组件上的事件进行处理
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.2 AdjustmentEvent类
? AdjustmentEvent事件由实现了 Adjustable接口的对象引发,比如在
Scrollbar和 SrollPane对象上调整滚动值(通过拖动滑块、点击滚动条上的
箭头或点击滚动条的空白区域)时,就会引发 AdjustmentEvent事件。
? AdjustmentEvent类常用方法:
– public int getValue( )
– public int getAdjustmentType( )
? 处理 AdjustmentEvent事件的接口是 AdjustmentListener,其中只包含一个
方法:
– public void adjustmentValueChanged(AdjustmentEvent e)
– 当滚动条当前值发生改变时调用该方法 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.3 ComponentEvent类
? ComponentEvent类是所有组件级事件的根事件类,它是以下事
件类的父类,ContainerEvent,FocusEvent,InputEvent,
PaintEvent,WindowEvent。
? 当 GUI上的组件发生位置移动或改变大小时产生该类的事件,但
ComponentEvent类仅仅为了提示的目的而存在,因为 AWT内部
将自动处理组件的移动和调整大小,不论程序是否接收到这些
ComponentEvent事件 GUI的布局都会正常工作。
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.4 FocusEvent类
? FocusEvent类是组件上的焦点事件类,当组件获得或失去焦点
( focus)时,都会产生该事件。
? 所有的组件都能产生 FocusEvent事件,比较常见的是 TextField和
Button上的焦点事件。
? 处理 FocusEvent事件,需要实现 FocusListener接口,其中包含 2个
方法:
– public void focusGained(FocusEvent e)
在组件获得 focus时被调用
– public void focusLost(FocusEvent e)
在组件失去 focus时被调用。 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.5 ItemEvent类
? ItemEvent类事件是发生在具有项目选择功能组件上的,比如,选中 List
或 Choice中的选项,或是改变了 Checkbox的状态时,就会引发
ItemEvent事件。
? ItemEvent类常用方法:
– public Object getItem( )
– public int getStateChange( )
? 处理 ItemEvent事件,需要实现 ItemListener接口,其中包含 1个方法:
– public void itemStateChanged(ItemEvent e)
– 当选项的选择状态发生改变时被调用
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
? MouseEvent事件是用户使用鼠标在某个组件上进行某种动作
时产生的事件,比如鼠标单击组件、鼠标移入组件区域、鼠标
移出组件区域等等都会发生 MouseEvent事件。
? MouseEvent类常用方法:
– public int getClickCount( )
– public Point getPoint( )
– public int getX( )
– public int getY( )
– public int getButton( )
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
--MouseListener
? 与 MouseEvent事件对应的监听器接口有 2个:
MouseListener 和 MouseMotionListener
? MouseListener接口主要处理鼠标单击、按下、释放、移入组件和移
出组件的事件,该接口包含 5个方法:
– void mouseClicked(MouseEvent e)
– void mousePressed(MouseEvent e)
– void mouseReleased(MouseEvent e)
– void mouseEntered(MouseEvent e)
– void mouseExited(MouseEvent e)
Java中的事件处理机制Java高 级 程序 设计
5.3.6 MouseEvent类
--MouseMotionListener
? MouseMotionListener:
– MouseMotionListener接口负责处理鼠标的拖放和移动
事件,该接口包含 2个方法:
? void mouseDragged(MouseEvent e)
? void mouseMoved(MouseEvent e)
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.7 KeyEvent类
? KeyEvent事件是与键盘相关的事件,当 KeyEvent事件的事件
源处于激活状态时,按下、释放或敲击键盘上的某个键会引发
KeyEvent事件。
? KeyEvent类常用方法:
– public char getKeyChar( )
– public int getKeyCode( )
– public static String getKeyText(int keyCode)
– public boolean isActioinKey( )
Java中的事件处理机制Java高 级 程序 设计
5.3.7 KeyEvent类
--KeyListener
? KeyListener:
– 处理 KeyEvent事件的监听器接口是 KeyListener,其中
包含 3个方法,
? void keyTyped(KeyEvent e)
? void keyPressed(KeyEvent e)
? void keyReleased(KeyEvent e)
返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.8 TextEvent类
? TextEvent事件发生在文本组件中的字符串发生改变时。
? 前面介绍的 ActionEvent事件也可以发生 TextField上,但
它产生的时机是输入文本并按下 Enter键之后,TextEvent
事件是在向 TextField输入字符串而还未按下 Enter键时就
会引发的事件。
? 处理 TextEvent事件的监听器接口是 TextListener,该接口
中只包含 1个方法:
– void textValueChanged(TextEvent e) 返 回
Java中的事件处理机制Java高 级 程序 设计
5.3.9 WindowEvent类
? WindowEvent事件是发生在窗口对象上的事件,当用户或应用程序
在打开、关闭、最大或最小化窗口等时发生 WindowEvent事件。
? 处理 WindowEvent事件需要实现 WindowListener接口,其中包含 7个
方法:
– void windowOpened(WindowEvent e)
– void windowClosing(WindowEvent e)
– void windowClosed(WindowEvent e)
– void windowIconified(WindowEvent e)
– void windowDeiconified(WindowEvent e)
– void windowActivated(WindowEvent e)
– void windowDeactivated(WindowEvent e) 返 回
Java中的事件处理机制Java高 级 程序 设计
5.4 事件适配器
? 事件适配器:
– 采用实现事件监听器接口的方式编写事件处理代码时,
必须重写监听器接口中的所有方法,尽管有些方法不会
用到。
– 事件适配器类
? 是已经实现了相应监听器接口的类,只不过方法体为空
? 采用继承事件适配器类的方式编写事件处理代码时,只
需要重写必要的方法即可
Java中的事件处理机制Java高 级 程序 设计
5.5 事件处理的多重运用
? 事件处理的多重运用:
– 有时,用户在 GUI上的操作可能触发了不止一个事件源
的事件;也有时,一个事件源上产生了不同类型事件。
针对这种情况,应根据需求具体问题具体对待,如有必
要可对这些事件分别注册监听器来进行处理。
Java中的事件处理机制Java高 级 程序 设计
第五章
小 结
? 本章小结:
– 本章主要介绍了事件的概念,事件处理机制,授权事件
模型
– 常见的事件事件类及其对应的监听器接口
– 事件处理代码的编写方式