Presentation is loading. Please wait.

Presentation is loading. Please wait.

GUI事件处理 主讲:赖国荣 QQ:31343080 www.sms98.cn.

Similar presentations


Presentation on theme: "GUI事件处理 主讲:赖国荣 QQ:31343080 www.sms98.cn."— Presentation transcript:

1 GUI事件处理 主讲:赖国荣 QQ:

2 回 顾 1、AWT简介 2、容器组件 3、布局管理器 4、常用组件 组件/容器/布局管理器 Frame Panel
FlowLayout/GridLayout/BorderLayout 4、常用组件 Button/Label/TextField/List/Choice

3 目 标 1、AWT事件处理 2、AWT组件库

4 事件处理机制 事件授权处理机制:对组件注册事件监听,当有某个动作触发了这个该事件后,Java运行时系统将调用对应的方法响应该操作。
事件处理过程中涉及到三类对象: 1、Event-事件。每个事件都对应java中的一个 类。例如键盘操作对应的事件类是KeyEvent。 2、Event Source-事件源。事件发生的场所,通常就是各个组件,例如按钮Button 。 3、Event handler-事件处理者。接收事件对象并对其进行处理的对象。

5 事件处理机制 刑事事件 处理事件 两个律师“监听”他的不同行为 民事事件 他“授权”给不同的律师 处理不同的事件

6 事件处理机制 使用授权处理模型进行事件处理的一般方法归纳如下:
1、对于某种类型的事件XXXEvent, 定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener; 2、事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。

7 事件类 AWTEvent-5-1 1、与AWT有关的事件都是java.awt.AWTEvent类派生的。 2、AWT事件分为两大类 :
低级事件:基于组件和容器的事件。 如:鼠标的进入,点击,拖放等,或组件的窗口开关等。 高级事件:基于语义的事件,它不和特定的动作相关联,而依赖于触发此事件的类。 如:TextField中按Enter键会触发ActionEvent事件。滑动滚动条会触发AdjustmentEvent事件。选中项目列表的某一条就会触发ItemEvent事件。

8 事件类 AWTEvent-5-2 低级事件 高级事件(语义事件) ComponentEvent(组件事件:组件尺寸的变化,移动)
ContainerEvent(容器事件:组件增加,移动) WindowEvent(窗口事件:关闭窗口,图标化) FocusEvent(焦点事件:焦点的获得和丢失) KeyEvent(键盘事件:键按下、释放) MouseEvent(鼠标事件:鼠标单击,移动) 高级事件(语义事件) ActionEvent(动作事件:按钮按下) AdjustmentEvent(调节事件:调节滚动条上数值) ItemEvent(项目事件:修改下拉列表中的选项) TextEvent(文本事件:文本对象改变)

9 事件类 AWTEvent-5-3 FocusEvent包含的事件: 1、FOCUS_FIRST 第一个获得焦点的对象标志符
2、FOCUS_GAINED 确定正获得焦点的组件标志符 3、FOCUS_LAST 最后一个获得焦点的对象标志符 4、FOCUS_LOST 确定失去焦点的组件标志符

10 事件类 AWTEvent-5-4 Mouse Event包含的事件: MouseMotion Event包含的事件:
MOUSE_PRESSED 当鼠标按下时触发该事件 MOUSE_RELEASED 当鼠标释放时触发该事件 MOUSE_CLICKED 当点击鼠标时触发该事件 MOUSE_ENTERED 当鼠标进入指定区域时触发该事件 MOUSE_EXITED 当鼠标退出指定区域时触发该事件 MouseMotion Event包含的事件: MOUSE_MOVED 当鼠标的位置发生改变时触发该事件 MOUSE_DRAGGED 当鼠标按下且位置发生改变时触发该事件

11 事件类 AWTEvent-5-5 KeyEvent事件包含: KEY_PRESSED 当按下键盘中某个键时触发。 KEY_RELEASED
当释放键盘中按下的键时触发。 KEY_TYPED 确定按下的是那个键值,通常是一个字符,对应pressed事件。

12 事件监听器-6-1 监听器是接口,根据事件类中定义的动作来定义方法。 AWT中每类事件都有对应的事件监听器。 事件监听器的使用:
1、注册事件监听。 2、在对应的事件监听方法中实现处理操作。

13 事件监听器-6-2 KeyEvent相对应的接口KeyListener :
 public interface KeyListener extends EventListener {    public void keyPressed(KeyEvent ev);    public void keyReleased(KeyEvent ev);    public void keyTyped(KeyEvent ev); }

14 事件监听器-6-3 Mouse Event对应的接口MouseListener
public interface MouseListener extends EventListener { public void mouseClicked(MouseEvent e) ; public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e) ; public void mouseEntered(MouseEvent e) ; public void mouseExited(MouseEvent e) ; }

15 事件监听器-6-4 AWT的组件类中提供注册和注销监听器的方法: 注册监听器:
public void add<ListenerType> (<ListenerType>listener); 如:button. addMouseListener(this); 注销监听器: remove<ListenerType> (<ListenerType>listener); 如:button..removeMouseListener(this);

16 事件监听器-6-5例子ThreeListener.java 例子:ThreeListener.java

17 事件监听器-6-6总结 1、在一个类中可以实现多个监听接口。 2、可以由同一个对象监听一个事件源上发生的多种事件 。
3、事件处理者和事件源处在同一个类中。 4、可以通过事件对象获得详细资料。

18 事件适配器Adapter –4-1 1、适配器(adapter)是实现XXXListener接口的抽象类。
3、但当需要多种监听器或该类已经有父类的时候,就不能通过适配器来实现事件监听。

19 事件适配器Adapter –4-2 java.awt.event包中定义的事件适配器类:
1.ComponentAdapter( 组件适配器) 2.ContainerAdapter( 容器适配器) 3.FocusAdapter( 焦点适配器) 4.KeyAdapter( 键盘适配器) 5.MouseAdapter( 鼠标适配器) 6.MouseMotionAdapter( 鼠标运动适配器) 7.WindowAdapter( 窗口适配器)

20 事件适配器Adapter –4-3 MouseAdapter鼠标事件适配器类
public abstract class MouseAdapter implements MouseListener { public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }

21 事件适配器Adapter –4-4例子

22 用内部类实现事件处理-3-1 内部类(inner class)是被定义于另一个类中的类。 使用内部类的主要原因是由于:
一个内部类的对象可访问外部类的成员方法和变量,包括私有的成员。 实现事件监听器时,采用内部类编程非常容易实现其功能。 编写事件驱动程序,内部类很方便。

23 用内部类实现事件处理-3-2简单内部类例子

24 用内部类实现事件处理-3-3例子

25 AWT组件库 –button-3-1 1、按钮(Button) 构造方法是: public Button()
public Button(String label) 如: Button b1 = new Button(); Button okb = new Button(“OK”);

26 AWT组件库 –button-3-2 按钮事件:
1、按钮被点击后,会产生ActionEvent事件,需ActionListener接口进行监听和处理事件。 2、ActionEvent的对象调用getActionCommand()方法可以得到按钮的标识名,缺省按钮名为 labelN。 3、用setActionCommand()可以为按钮设置组件标识符。

27 AWT组件库 –button-3-3例子

28 AWT组件库 –Checkbox -4-1 2、复选框( Checkbox)提供简单的“on/off”开关,旁边显示文本标签。 构造函数:
public Checkbox() public Checkbox(String label) public Checkbox(String label, boolean state) public Checkbox(String label, boolean state, CheckboxGroup group)

29 AWT组件库 –Checkbox -4-2 参数说明: 1、 checkbox的默认状态是“off” 。
3、可将多个checkbox放在一个checkboxgroup中当成一组。 4、第四、五两种构造器是一样的,只是 参数位子颠倒。

30 AWT组件库 –Checkbox -4-3 Checkbox监听事件 复选框用ItemListener 来监听ItemEvent事件
当复选框状态改变时用getStateChange()获取当前状态 使用getItem()获得被修改复选框的字符串对象

31 AWT组件库 –Checkbox -4-4例子

32 AWT组件库 –Choice-2-1 3、下拉式菜单(Choice)下拉式菜单每次只能选择其中的一项,它能够节省显示空间,适用于大量选项。
构造函数: public Choice() Choice 用ItemListener接口来进行监听

33 AWT组件库 –Choice-2-2

34 AWT组件库 –TextField-2-1 4、单行文本输入区(TextField) 构造函数 public TextField()
创建一个空字符的输入框 public TextField(String text) 用指定的字符串创建一个输入框 public TextField(int colu) 创建一个空的输入框,规定字符长度类似不超过 col指 定的数字。 public TextField(String text, int columns) 用指定的字符串创建一个输入框,规定字符长度 类似不超过 col指定的数字。

35 AWT组件库 –TextField-2-2 在输入框中按下回车键时,会发生ActionEvent事件,通过ActionListener中的actionPerformed()方法对事件进行相应处理。 setEditable(boolean)方法设置为只读属性。 例如: TextField tf1 = new TextField(); TextField tf2 = new TextField("", 20); TextField tf3 = new TextField("Hello!"); TextField tf4 = new TextField("Hello",30);

36 AWT组件库 –TextArea 5、文本输入区(TextArea) TextArea可以显示多行多列的文本
用setEditable(boolean)方法,可以设置为只读 可以显示水平或垂直的滚动条。

37 AWT组件库 –MenuBar & Menu 6、MenuBar只能被添加到Frame对象中,作为整个菜单树的根基。
调用frame的setMenuBar()为一个窗口添加一个菜单条。 Menu 菜单,它可以被添加到MenuBar中或其它Menu中。 MenuItem菜单树中的“叶子节点”,通常被添加到一个Menu中 。 MenuBar和Menu都没有必要注册监听器。 MenuItem通过ActionListener来实现事件监听。

38 AWT组件库 –MenuBar & Menu

39 AWT组件库 –其他组件 7、列表(List) 提供了多个文本选项,列表支持滚动 条,可以浏览多项。
8、框架(Frame)Frame是顶级窗口,可以显示标 题,重置大小。 9、对话框(Dialog)它是Window类的子类。对话 框和一般窗口的区别在于它依赖于其它窗口。 10、画布 (Canvas)提供一个空白的区域,可以让 用户继承后自定义组建。

40 补充资料 各个组件与他们对应的事件监听见 组件与监听器的对应关系图\listener.htm AWT中提供的事件类型以及对应的接口方法
事件类型及其接口和方法\event&interface.htm

41 总结 1、AWT中提供的两种事件监听处理方法 1、通过实现XXXListener接口 2、通过继承XXXAdapter类


Download ppt "GUI事件处理 主讲:赖国荣 QQ:31343080 www.sms98.cn."

Similar presentations


Ads by Google