第十一章 GUI异常处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2006-12-5
17
第五节 事件适配器(Adapters)
监听器是接口,所以要实现其所有方法 例如,MouseListener接口声明的方法有:
public void mouseClicked(MouseEvent event) public void mouseEntered(MouseEvent event) public void mouseExited(MouseEvent event) public void mousePressed(MouseEvent event) public void mouseReleased(MouseEvent event)
2006-12-5
13
编写代码的步骤: 1. 定义一个实现监听器接口的类 2. 为这个类创建一个实例 3. 通过调用addXXXListener()方法,将这个方 法传递给监听器类的实例
2006-12-5
14
import java.awt.*;
import java.awt.event.*;
public class TestButton { public class ButtonHandler implements ActionListener { private Frame f; public void actionPerformed(ActionEvent e) { private Button b; System.out.println("Action occurred"); public TestButton() { System.out.println("Button's command is: " f = new Frame("Test"); + e.getActionCommand()); b = new Button("Press Me!"); } b.setActionCommand( } "ButtonPressed"); } public void launchFrame() { b.addActionListener(new ButtonHandler()); f.add(b,BorderLayout.CENTER); f.pack(); f.setVisible(true); } public static void main(String args[]) { TestButton guiApp = new TestButton(); guiApp.launchFrame(); } }
2006-12-5
3
事件源
事件源是一个事件的产生者。 例如,在Button组件上点击鼠标会产生以这 个Button 为源的一个ActionEvent ActionEvent是一个对象,它包含所发生的事 件的信息。这些信息包括:
GetActionCommand-返回与动作相关联的命令名称。 GetModifiers-返回在执行动作时持有的修饰符。
InputEvent
PaintEvent
WindowEvent
KeyEvent
2006-12-5
MouseEvent
7
2006-12-5
8
2006-12-5
9
ActionEvent 激活组件时发生的事件 FocusEvent 获得或者失去焦点时发生的事件 ItemEvent 从选项、复选框或列表框中选择项时发 生的事件 MouseEvent 操作鼠标时发生的事件 KeyEvent 操作键盘时发生的事件 TextEvent 更改文本组件时发生的事件 WindowEvent 操作窗口时发生的事件,例如最小 化、最大化某个窗口 AdjustmentEvent 调节可调整的组件(例如移动滚 动条)时发生的事件
2006-12-5
6
事件类的继承关系
java.util.EventObject java.awt.awt.Event
ActionEvent AdjustmentEvent ComponentEvent ItemEvent java.awt.event
TextEvent
ContainerEvent
FocusEvent
2006-12-5
21
第六节 事件处理方法
通常有两种事件处理的方法:
• 内嵌类 • 匿名类
这两种方法处理的效果相同
2006-12-5
22
用内嵌类处理事件
见示例TestInner.java
2006-12-5
23
用匿名类处理事件
frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);});
实现监听器的每个方法很麻烦,而且有些并不需 要处理
2006-12-5 18
为了方便,java提供了适配器类 适配器类实现监听器接口 适配器类的方法都是空的 我们可以继承适配器类,以代替实现监听 器接口
2006-12-5
19
例如:
import java.awt.*; import java.awt.event.*; public class MouseClickHandler extends MouseAdapter { public void mouseClicked(MouseEvent e){ //事件处理 } }
2006-12-5
20
注意:
适配器是类,不是接口。所以只能继承一 个适配器类。而监听器是接口,可以实现 多个 覆盖方法的时候要小心。
例如:public void MouseClicked(MouseEvent e) 是合法的,但并没有覆盖mouseClicked(MouseEvent e) 方法。这样的错误经常发生。
2006-12-5 11
委托(Delegation)模型
2006-12-5
12
第四节 监听器(Listener)
Java.awt.event里定义了所有的监听器接口 监听器都是接口,一般每个事件都对应一 个监听器接口,例如:
ActionEvent ActionListener FocusEvent FocusListener ItemEvent ItemListener MouseEvent MouseListenter MouseMotionEvent MouseMotionListenter
2006-12-5
4
事件处理器
接收事件、解释事件并处理用户交互的方法
2006-12-5
5
第二节 事件分类
Java定义了许多不同的事件类,它们分别代 表特定的事件类型。 java.awt.AWTEvent类是所有AWT事件类的 父类。 许多事件类都属于java.awt.event包,但也有 一些不属于。
2006-12-5 10
第三节 wenku.baidu.comava2事件处理模型
java2使用的是委托事件模型,从JDK1.1开始使 用这种模型。 委托模型的处理过程:
1. 当产生事件时,该事件被送往产生这个事件的组件; 2. 然后,注册一个或多个称为监听器的类。这些类包含 事件处理器,用来接收和处理这个事件。
采用这种方法,事件处理器就可被安排在与源组 件分离的对象中。 监听器就是实现了Listener接口的类。
见示例TestAnonymous.java
2006-12-5
24
2006-12-5 15
例二
同一个监听器处理多个不同控件的事件响 应。 方法一:使用 getActionCommand(String); 方法二:使用 Object source=event.getSource( ); 见TestMultiButton.java
2006-12-5 16
注意:
见示例TwoListener.java 实现多接口 监听多个事件源
第十一章 GUI事件处理
学习内容
什么是事件 事件分类 Java2事件处理模型 监听器(Listener) 事件适配器(Adapter) 事件处理方法
2006-12-5
2
第一节 什么是事件(event)
事件-描述发生了什么的对象 事件源-事件的产生者 事件处理器-接收事件、解释事件并处理用 户交互的方法