《Java应用开发与实践-第8章GUI事件处理机制.ppt》由会员分享,可在线阅读,更多相关《Java应用开发与实践-第8章GUI事件处理机制.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第8章章 GUI事件处理机制事件处理机制Java应用开发与实践第第二二部分部分 酒店管理系统的设计酒店管理系统的设计学习目标学习目标l理解理解GUI事件处理机制事件处理机制l理解事件处理与事件监听理解事件处理与事件监听l了解常用事件类了解常用事件类l理解内部类在事件处理中的应用理解内部类在事件处理中的应用n8.1 事件处理机制概述事件处理机制概述n8.2 事件处理与事件监听事件处理与事件监听n8.3 常用事件类常用事件类n8.4 内部类在事件处理中的应用内部类在事件处理中的应用n8.5 实训实训8 GUI事件处理基础练习事件处理基础练习目录目录8.1 事件处理机制概述事件处理机制概述l事件处
2、理机制是一种事件处理框架,其设计目的是把GUI交互动作(如单击或移动鼠标、菜单选择、点击按钮、键盘按下键、关闭窗口等)转变为调用相关的事件处理程序进行处理。l通常在建立GUI用户界面之后,就需要增加事件处理,编写相应的事件监听器类,以及在事件源上注册事件监听器对象。8.1 事件处理机制概述事件处理机制概述l通常在图形界面有事件源产生事件对象并传递此对象,对象被传递到一个监听器对象,监听器接收事件对象,激活事件处理器,运行处理器里面的处理代码,实现代码里的功能。8.2 事件处理与事件监听事件处理与事件监听1.事件l事件是用户在图形用户界面上的一个操作(通常使用各种输入设备比如:鼠标、键盘等来完成
3、)。l当一个事件发生时,该事件用一个事件对象来表示,事件对象有对应的事件类,不同的事件类描述各种不同类型的用户动作,事件类包含在java.awt.event和javax.swing.event包中。8.2 事件处理与事件监听事件处理与事件监听2.事件源产生事件的组件叫事件源。比如在一个按钮上单击鼠标时,该按钮就是事件源,会产生以这个按钮为源一个ActionEvent类型的事件,这个ActionEvent实例是一个对象,它包含关于刚才所发生的那个事件的信息的对象;如果文本框获得焦点.那么事件源就是文本框,会产生一个FocusEvent类型的事件;如果窗口被关闭,那么事件源就是窗口,会产生一个Wi
4、ndowListener类型的事件。8.2 事件处理与事件监听事件处理与事件监听3.事件处理器(事件处理方法)事件处理器是一个接收事件对象并进行相应处理的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。因此,把事件处理器所在的这个类,叫做事件监听器类。8.2 事件处理与事件监听事件处理与事件监听在开发Swing程序一般遵循这样的步骤:根据需要创建不同的界面类。添加合适的组件到对应的界面类中。为界面和界面中的组件添加必要的事件监听器,对诸如菜单选择、点击按钮以及文本输入之类的事件进行响应。8.2 事件处理与事件监听事件处理与事件监听当用户在用户界
5、面层执行了一个动作,事件被送往产生这个事件的组件,注册一个或多个称为监听者的类取决于每一个组件,这些类包含事件处理器,用来接收和处理这个事件。监听者就是实现了Listener接口的类。8.2.1 事件处理事件处理8.2 事件处理与事件监听事件处理与事件监听事件是只向注册的监听者报告的对象。每个事件都有一个对应的监听者接口,规定哪些方法必须在适合接收那种类型的事件的类中定义,实现了定义那些方法的接口的类可以注册为一个监听者。8.2.2 事件事件监听监听事件类型事件源组件类型监听器接口必须实现的方法ActionEventJButton,JCheckBox,JMenuItem,JMenu,JChec
6、kBoxMenuItem,JTextField等ActionListener actionPerformed()ItemEventJComboBox,JList等ItemListener itemStateChanged()MouseEvent JFrame,JPanel,JButton等容器类MouseListener MouseMotionListener MouseWheelListener mouseClicked()mousePressed()mouseReleased()8.2 事件处理与事件监听事件处理与事件监听l接收鼠标事件的抽象适配器类MouseAdapter、接收窗口事件的
7、抽象适配器类WindowAdapter、接收键盘事件的抽象适配器类KeyAdapter、用于接收组件事件的抽象适配器类ComponentAdapter等。l其目的是简化事件监听器类的编写,监听器适配器类是对事件监听器接口的简单实现(方法体为空),这样用户可以把自己的监听器类声明为适配器类的子类,从而可以不管其他方法,只需重写需要的方法。l对应于监听器接口XxxListener的适配器接口的类名为XxxAdapter。接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建监听器对象。8.2.3 事件适配器事件适配器8.3 常用事件类常用事件类lActionEvent事件是很常用的
8、一类事件。l对于发出ActionEvent事件的组件,我们可以调用setActionCommand方法为其关联一个字符串,用于指示这个动作想执行的命令。如果程序没有使用setActionCommand方法为组件关联一个命令字符串,则其命令字符串为组件的标题文本。ActionEvent的getActionCommand方法就是用于返回这个命令字符串的。8.3.1 动作事件动作事件8.3 常用事件类常用事件类l当用户点击JFrame上的关闭窗口按钮时,JFrame会自动隐藏这个框架窗口,但没有真正关闭这个窗口,这个窗口还在内存中,我们需要在windowClosing()事件处理方法中,调用这个窗口
9、对象的dispose()方法来真正的关闭这个窗口。l调用JFrame的setDefaultCloseOperation方法,设置JFrame对这个事件的处理方式为JFrame.EXIT_ON_CLOSE,当用户点击JFrame上的关闭窗口按钮时,直接关闭这个框架窗口并结束程序的运行。8.3.2 窗口事件窗口事件8.3 常用事件类常用事件类lKeyListener用于接收键盘事件(击键)的监听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象KeyAdapter类(仅重写有用的方法)。然后使用组件的addKeyListener方法将从该类所创建的监听器对象向该组件注册
10、。按下、释放或键入键时生成键盘事件。然后调用监听器对象中的相关方法并将该KeyEvent传递给它。8.3.3 键盘事件键盘事件8.4 内部类在事件处理中的应用内部类在事件处理中的应用lJava内部类是指一个类的定义放在另一个类内部进行定义的类,而匿名类(Anonymous Class)是指没有名字的类。匿名内部类也就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,可以使用匿名内部类进行事件处理,使用匿名内部类可以非常方便的编写事件处理程序,并使代码更简洁更灵活。8.4 内部类在事件处理中的应用内部类在事件处理中的应用public class OneCla
11、ss extends JFrame其它代码./声明窗体中的组件 OneClass()/构造方法./将事件源注册到监听器,监听器用匿名内部类实现 someObject.addMouseListener(new MouseAdapter()public void mouseClicked(MouseEvent e)/实现MouseAdapter()的鼠标点击方法./事件处理器代码 );其它代码.8.5 实训实训8 GUI事件处理基础练习事件处理基础练习l要求:使用3个单选框对窗口的颜色及窗口里的文字进行改变,需要实现ActionListener接口,对于单选框控件,还需要用到ButtonGroup
12、类。任务任务1:利用单选框对窗口颜色进行改变:利用单选框对窗口颜色进行改变8.5 实训实训8 GUI事件处理基础练习事件处理基础练习要求:在键盘上按下任意键,都在控制台有相应的键输出提示,另外需要把按下的键显示在文本框中任务任务2:利用:利用KeyListener设计键盘事件设计键盘事件小结小结lJava采用了一种名为“委托事件模型”的事件处理机制,以支持Java GUI程序与用户的实时交互。l用户在与组件交互时,遇到特定操作则会触发相应的事件,即自动创建事件类对象并提交给Java运行时系统,建立监听和被监听的关系,这一过程称为注册监听。l为简化编程负担,JDK中针对大多数事件监听器接口提供了相应的实现类(事件适配器Adapter),在适配器中,实现了相应监听器接口的所有方法,但不做任何处理,即只是添加了一个空的方法体。在定义监听器类时就可以不再直接实现监听接口,而是继承事件适配器类,并只重写所需要的方法即可。