第八讲 AWT和事件监听
- 格式:doc
- 大小:32.50 KB
- 文档页数:3
简答5题30分1.什么是GUI?举出三个AWT组件的类名,并说明AWT组件的一般功能。
P99-101GUI是图形用户界面;AWT组件:Button--按钮,功能:用户通过单击该组件来执行特定的操作;Label—标签,功能:用于输出文字信息,这些信息不可删除也不可修改;TextFiled—文本框,功能:用于显示或者接受用户键盘输入的单行文本信息,不能显示多行,这行信息可以修改。
2.什么是Frame、Panel?它们有什么区别?它们的默认布局是哪种布局?P101-104(1)Frame是Window的子类,一个Frame对象就是一个有标题有边界的顶层窗口。
Panel是最简单的容器类,是Container的子类。
(2)区别:Panel是一般容器,可以自身嵌套(比如在panel1里嵌入panel2);但Frame 已经是顶层容器了,自身不能嵌套。
(3)Frame默认BorderLayout布局;Panel默认FlowLayout布局。
3.什么是事件、事件源、事件处理方法、事件监听器?举出两个事件的类名。
P114-116(1)事件:当用户在界面上执行一个操作,例如按下键盘、拖动或者单击鼠标时,都将产生一个事件。
事件是用来描述所发生事情的对象,对应用户操作的不同种类有不同类型的事件类与之对应。
事件源:event source 是指一个事件的产生者。
事件监听器:就是调用事件处理方法的对象。
(2)两个事件的类名:WindowEvent窗口事件;ActionEvent活动事件。
4.写出绘制直线、矩形、椭圆的函数,并解释各自的形参的意义。
P182-183直线:DrawLine(int x1,int y1,int x2,int y2)其中参数(x1,y1)和(x2,y2)是直线的起止坐标;矩形:drawReat(intx,inty,intwidth,int height)其中参数(x,y)是起点位置,width是宽,height是高。
事件监听机制原理1.事件监听机制的基本原理事件监听机制的基本原理是通过注册和触发事件来实现的。
当程序需要监听一些事件时,会注册一个回调函数或方法,该函数或方法包含需要在事件发生时执行的逻辑代码。
当事件发生时,程序会自动触发相应的回调函数或方法,从而实现事件的处理。
2.事件监听机制的实现方式-基于接口的实现方式:这种方式需要定义一个事件接口,包含需要监听的事件的所有方法。
其他模块可以实现该接口并注册为事件监听者。
当事件发生时,调用事件接口的方法即可触发相应的事件处理代码。
-基于反射的实现方式:这种方式不需要事先定义事件接口,而是通过反射机制动态地调用事件处理方法。
程序会通过反射找到所有注册的事件监听者,并在事件发生时调用相应的事件处理方法。
-基于函数指针的实现方式:这种方式需要定义一个监听函数指针类型,其他模块可以通过注册监听函数指针的方式进行事件监听。
当事件发生时,调用注册的监听函数指针即可触发相应的事件处理代码。
3.事件监听机制的应用-GUI界面开发:在GUI开发中,经常需要监听各种用户操作事件,例如点击按钮、输入文本等。
通过事件监听机制,可以将各个界面元素的事件处理逻辑和界面展示逻辑分离,提高代码的可维护性和可扩展性。
-网络通信:在网络通信中,常常需要监听底层网络库或框架的事件,例如数据接收、连接状态变化等。
通过事件监听机制,可以将网络库与具体业务逻辑解耦,使得业务逻辑可以针对不同的事件进行处理。
-消息传递:在分布式系统或消息队列中,常常需要监听特定的消息事件。
通过事件监听机制,可以实现异步处理消息,提高系统的性能和可伸缩性。
4.事件监听机制的优缺点-解耦性:事件监听机制将事件的产生和处理分离,各个模块之间可以互不干扰地进行开发和维护,提高代码的可维护性和可扩展性。
-灵活性:事件监听机制允许监听多个事件,并可以动态注册和注销事件监听者,使得程序可以根据需要进行灵活的配置和扩展。
-可重用性:事件监听机制的回调函数或方法可以被多个事件使用,提高代码的可重用性。
事件监听机制原理1.发布者和订阅者:事件监听机制通常涉及两个主要实体,即发布者和订阅者。
发布者负责发送事件,而订阅者则通过注册监听器来接收和处理这些事件。
发布者不需要关心订阅者的数量或类型,只需要负责触发事件。
2.注册监听器:订阅者通过注册监听器来声明对指定事件的兴趣。
当事件发生时,这些监听器将被按照注册顺序依次调用。
在注册监听器时,通常需要指定监听的事件类型和相应的处理方法。
3.事件队列:事件监听机制通常使用一个事件队列来存储已经发生的事件。
当事件触发时,它将被放入事件队列中。
通过使用队列,可以确保所有事件按照先后顺序进行处理,避免事件丢失或处理混乱。
4.事件循环:事件监听机制通常采用事件循环来处理事件。
事件循环是一个持续运行的循环,它不断从事件队列中取出事件并依次调用相应的监听器进行处理。
通过事件循环,可以实现事件的异步处理,不阻塞程序的正常运行。
5.回调函数:在事件监听机制中,监听器通常是通过回调函数来实现的。
回调函数是一种被传递给其他函数进行异步调用,以指定后续操作的方式。
当事件发生时,监听器会调用相应的回调函数,传入事件相关的参数,以便进行处理。
6.解耦和扩展性:事件监听机制可以很好地实现程序组件之间的解耦和扩展性。
发布者只需要负责触发事件,而不需要关心具体的事件处理逻辑。
订阅者可以自由选择感兴趣的事件,并注册相应的监听器进行处理。
这种分离使得系统更加灵活和可扩展。
7.多线程处理:事件监听机制可以很好地支持多线程处理,因为事件的触发和处理是异步进行的。
通过将事件处理操作和主线程分离,可以提高系统的响应速度和并发性能。
总结起来,事件监听机制通过注册监听器,使用事件队列和事件循环来实现异步事件的触发和响应。
它通过回调函数实现事件处理的具体逻辑。
这种机制可以使程序组件之间解耦,实现系统的扩展性和灵活性,并支持多线程处理,提高系统的并发性能。
事件监听机制介绍事件监听机制是一种在软件开发中常见的设计模式,它用于实现程序的松耦合和事件驱动。
通过事件监听机制,程序可以在特定的事件发生时,通知相关的监听器进行相应的处理。
这种机制广泛应用于各种类型的应用程序,包括图形界面、网络通信、游戏开发等领域。
事件监听机制的基本原理事件监听机制的基本原理是通过事件源和事件监听器来实现的。
事件源是指能够触发事件的对象,而事件监听器则是对事件进行监听和处理的对象。
当事件源触发一个事件时,它会通知所有注册了监听器的对象,并将事件对象传递给它们。
监听器可以根据事件对象的内容,执行相应的操作。
事件监听机制的应用场景事件监听机制在各种应用场景中都有广泛的应用。
下面是一些常见的应用场景:图形界面开发在图形界面开发中,用户的操作会触发各种事件,例如按钮的点击、鼠标的移动等。
通过事件监听机制,可以将对这些事件的处理逻辑与界面的显示逻辑分离,提高代码的可维护性和可扩展性。
网络通信在网络通信中,事件监听机制可以用于处理网络连接的建立和断开、数据的接收和发送等事件。
通过监听这些事件,可以及时地对网络状态进行监控和处理,保证通信的稳定性和可靠性。
游戏开发在游戏开发中,事件监听机制可以用于处理游戏对象的移动、碰撞检测、技能释放等事件。
通过监听这些事件,可以实现游戏对象之间的交互和协作,提供更加丰富和动态的游戏体验。
事件监听机制的实现方式事件监听机制可以通过不同的实现方式来实现,下面是一些常见的实现方式:接口回调接口回调是一种简单而常见的实现方式。
在这种方式中,事件源会提供一个注册监听器的方法,监听器需要实现一个特定的接口,并在接口中定义处理事件的方法。
当事件发生时,事件源会调用监听器的方法进行处理。
事件委托事件委托是一种将事件处理逻辑委托给其他对象的方式。
在这种方式中,事件源会将事件委托给一个特定的对象来处理。
这个对象可以是一个方法、一个匿名函数或者一个Lambda表达式。
当事件发生时,事件源会调用委托对象进行处理。
Java AWT事件处理1 AWT事件处理基本概念AWT事件处理的过程中,主要涉及3类对象。
(1) Event(事件):用户对组件的一个操作,称之为一个事件,以类的形式出现,例如,键盘操作对应的事件类是KeyEvent。
其实例在改事件发生时有系统自动产生。
(2) Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮Button。
(3) Event Monitor(事件监听器):接收事件对象并对其进行处理的类的对象,通常其中某个成员方法对事件进行相应的处理。
事件委托处理模型图10-10 事件委托处理模型Java采取了事件委托处理模型(Delegation Model),事件源自己不处理事件,而是把在其自身所有可能发生的事件委托给事件监听器来处理。
比如,在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以委托给事件监听器1来处理鼠标事件,同时委托给事件监听器2来处理键盘事件。
委托模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。
2 事件事件分类。
按事件的性质分类java.util.EventObject类是所有事件对象的基础父类,所有事件都是由它派生出来的。
AWT的相关事件继承于java.awt.AWTEvent类,这些AWT事件分为两大类:低级事件和高级事件。
(1)低级事件低级事件是指基于组件和容器的事件,当一个组件上发生事件,如鼠标的进入、点击、拖放等,或组件的窗口开关等时,触发了组件事件。
—ComponentEvent(组件事件:组件尺寸的变化、移动);—ContainerEvent(容器事件:组件增加、移动);—WindowEvent(窗口事件:关闭窗口、窗口闭合、图标化);—FocusEvent(焦点事件:焦点的获得和丢失);—KeyEvent(键盘事件:键按下、释放);—MouseEvent(鼠标事件:鼠标单击、移动)。
《Java基础入门》课后习题答案第8章GUI(图形用户界面)一、填空题1、在Java 中,图形用户界面简称: GUI2、事件监听器: 负责监听事件源上发生的事件,并对各种事件做出响应处理。
3、GUI 设计提供了一些基本的图形用户接口开发工具,如AWT:Swing 和JavaFX。
4、.如果单击Frame窗口有上角的关闭按相能将其关闭:那么这个Frame窗口添加了:WindowListener 监听器,并实现了监听器:windowClosing(WindowEvent e) 的方法。
5、创建下拉式菜单需要使用三个组件,分别是:JMenuBar、JMenu、JMenuItem二、判断题1、容器(Container)是一个可以包含基本组件和其他容器的组件。
对2.可以通过实现AetionListener 接口或者继承AconAdpter 类来实现动作事件监听器。
错3.CardLayout 布局管理器将界面看做一系列卡片,在任何时候只有其中一张卡片是可见的。
对4.非模态对话框是指用户需要等到处理完对话框后才能继续与其他窗口进行交互。
错5.JFrame 的默认布局管理器是FlowLayout。
错三、选择题1.下面四个组件中哪一个不是JComponent 的子类? (B)A.JButtonB.JDialogC. JLabelD.JMenuBar2.下面四个选项中,哪些是事件处理机制中的角色?(多选) (ABD)A.事件B.事件源C.事件接口D.事件监听器3. ActionEvent 的对象会被传递给以下哪个事件处理器方法? (D)A.addChangeListener()B. addActionListener()C. stateChanged()D. actionPerformed()4.下面哪些是FlowLayout 类中表示对齐方式的常量?(多选) (ABD)A.FlowLayout.LEFTB.FlowLayout.CENTERC. FlowLayout. VERTICALD. FlowLayout. RIGHT5.下列选项中关于JavaFX,描述错误的是(C )A.JavaFX是一个强大的图形和多媒体处理工具包集合B. JavaFX 允许开发者来设计、创建、测试、调试和部署客户端程序C.JavaFX不能与Swing实现互操作D.JavaFX可以实现跨平台功能四、简答题1、请简述GUI 中实现事件监听的步骤:●通过实现XxxListener接口或者继承XxxAdapter类实现一个事件监听器类,并对处理监听动作的方法进行重写●创建事件源对象和事件监听器对象●调用事件源的addXxxLisntener()方法,为事件源注册事件监听器对象2、请简述Swing 中的布局管理器有哪些。
第1篇一、Java Swing基本概念1. 什么是Java Swing?答:Java Swing是一种用于创建图形用户界面的库,它是Java语言的一个扩展,允许开发者创建具有丰富视觉效果的桌面应用程序。
2. Swing的组件有哪些?答:Swing组件包括基本组件(如按钮、标签、文本框等)、容器组件(如面板、窗口、滚动条等)、特殊组件(如树、表格等)。
3. Swing与AWT的区别是什么?答:Swing是基于Java的,而AWT是基于本地平台的。
Swing组件在不同平台上表现一致,而AWT组件在不同平台上可能有所不同。
Swing运行速度较慢,但提供了更多功能和更好的用户体验。
二、Swing基本组件1. 如何创建一个按钮,并设置其文本和字体?答:使用JButton类创建按钮,并设置其文本和字体。
```javaJButton button = new JButton("按钮");button.setFont(new Font("宋体", Font.PLAIN, 12));```2. 如何获取并设置文本框中的文本?答:使用JTextField类创建文本框,并通过getText()和setText()方法获取和设置文本。
```javaJTextField textField = new JTextField();String text = textField.getText(); // 获取文本textField.setText("新文本"); // 设置文本```3. 如何使用单选按钮(JRadioButton)实现多选?答:使用JRadioButton类创建单选按钮,并使用ButtonGroup类将它们分组。
```javaJRadioButton radioButton1 = new JRadioButton("选项1");JRadioButton radioButton2 = new JRadioButton("选项2");ButtonGroup buttonGroup = new ButtonGroup();buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);```4. 如何使用复选框(JCheckBox)实现多选?答:使用JCheckBox类创建复选框,它们之间互不影响。
一、概述awt的作用1.1 awt的全称1.2 awt的定位和作用1.3 awt的优点和局限二、awt常用的组件2.1 按钮(Button)2.2 标签(Label)2.3 文本框(TextField)2.4 文本区域(TextArea)2.5 列表(List)2.6 下拉列表(Choice)2.7 复选框(Checkbox)2.8 单选按钮(RadioButton) 2.9 滚动条(Scrollbar)2.10 对话框(Dialog)2.11 框架(Frame)三、awt的布局管理器3.1 FlowLayout3.2 BorderLayout3.3 GridLayout3.4 GridBagLayout3.5 CardLayout四、awt事件处理4.1 事件概述4.2 事件监听器4.3 事件对象4.4 事件的处理五、awt绘图5.1 绘图的基本概念5.2 绘图的步骤5.3 绘制图形5.4 绘制图像5.5 绘制文本六、awt的高级应用6.1 图形用户界面(GUI)开发 6.2 多媒体处理6.3 网络编程6.4 多线程处理七、awt的实际应用7.1 GUI程序开发7.2 窗口程序设计7.3 界面美化7.4 数据展示八、结语在Java编程中,awt(Abstract Window Toolkit)是一个用于创建图形用户界面(GUI)应用程序的基本工具包。
它提供了一系列的组件、布局管理器、事件处理和绘图功能,帮助开发者快速构建可视化的程序界面。
本文将从awt的基本组件、布局管理器、事件处理、绘图以及高级应用方面进行详细介绍。
一、概述awt的作用1.1 awt的全称awt的全称是Abstract Window Toolkit,它是Java的一个基本GUI 工具包,提供了一系列的类和方法供开发者创建、管理和展示图形用户界面。
1.2 awt的定位和作用awt的定位是作为Java的标准库,为开发者提供创建GUI界面的基本工具,充分利用面向对象的思想,让开发者能够通过简单的调用API来完成复杂的图形界面设计。
简单叙述事件处理四要素事件源、事件、事件监听器和事件服务程序从JDK1.1开始起,Java语言采用基于代理的事件处理模型。
基于代理事件处理模型是引进了监听器接口,每个事件类都有相关联的监听器接口。
当用户对GUI组件有所动作,GUI组件会自动产生相应的事件来响应用户的动作。
假设这些GUI组件已经注册了相关的监听器对象,监听器对象会一直监听已注册的组件对象是否有事件发生。
当监听器对象监听到组件有相对应的事件发生,就会调用监听器对象中方法,即事件处理器来实现一定的动作。
就这样,通过对目标监听器对象的相关Java方法调用,实现事件从事件源到监听者的传递。
从上面描述,可以归纳出采用基于代理的事件处理模式涉及到三个基本概念:事件源、事件对象和事件监听器。
一、事件源事件的产生者,通常是GUI组件对象,如按钮、窗口以及文本框等组件的实例对象:发出某种特定事件的事件源的标识是:通过指定方法注册到事件监听器对象,并接受对指定事件监听器对象的引用。
二、事件对象所有的事件对象继承自java.util.EventObject类的子类对象。
伴随着事件的发生,会产生相应的状态(如事件发生、监听器要求处理事件等信息),而这些状态信息封装在事件对象中。
事件对象作为单参数传递给响应该事件的监听器对象中的方法。
三、事件监听器每个明确的事件的发生,会有一个对应的Java方法执行事件处理。
这些方法都集中定义在继承java.util.EventL.istener的某事件监听器接口中。
事件监听器实际上指的是监听器接口的实例对象,可以实现监听器接口的一个或多个方法。
监听器对象可以根据事件对象的状态来响应事件。
为了实现事件的处理,需要执行如下四个步骤:第1步,程序导入java.awt.event包或javax.swing.event包,即import java.awt.event. 或 import javax.swing.event.通过导入这些关于事件处理的包,可以引入关于事件处理的监听接口,如java.awt.event.ActionListener等以及事件处理中事件类, 如java.awt.event.ActionEvent等。
第1章Java概述1.编译java application源程序文件将产生相应的字节码文件,这些字节码文件别的扩展名为.java2.执行一个java程序fristapp的方法是运行java fristapp3.main()方法的返回类型是void4.在java代码中,public static void main方法的参数描述正确的是string args【】,string【】args5.内存的回收程序负责释放无用内存√6.java体系主要分为java ME,Java SE,JavaEE三大块第2章Java基础1.Java语言中,下列标识符错误的是40name2.java变量中,以下不属于引用类型的数据类型是字符型3.double d=5.3E12 ×4.C5.A6.for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确的是初值和增量都是赋值语句,终值是条件判断语句7.当输入下面选项中3值时,将会输出default8.下面哪种方法能够支持javadoc命令/**…*/9.下面声明一个string类型的数组正确的是string str[]10.下面定义一个整型数组,不合法的是int[][]array=new int[][4];11.给定代码;。
下面叙述正确的是输出的结果为:012.java语言规定,标示符只能由字母,数字美元符$和下划线租成,并且第一个字符不能是数字;java是区分大小写的。
13.表达式1/2*3的计算结果是0;设x=2,则表达式(x++)/3的值是014.数组的长度可以用其属性lengt h获得;创建一个数组对象可以使用new关键字创建第3章面向对象基础1.在java中引用对象变量和对象间有什么关系?引用变量是指向对象的一个指针2.对象是面向对象技术的核心所在,在面向对象程序设计中,对象是累的抽象×3.构造方法何时被调用?创建对象时4.A,B,D5.在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2.在类c中要使用类a的方法和类b的方法b,需要选择import p1.*; import p1.p2,*;6.java中,访问修饰符限制最高的是private第4章类之间的关系1.在java中,下面关于类的描述正确的是一个父类可以有多个子类2.在java语言中,类worker是类person的子类,worker的构造方法中有一句“super()”,该语句是调用person的构造法法。
AWT是api负责为Java程序建立的图形用户接口,AWT无疑使Java平台中最直观的部分之一。
AWT的基本思想是以面向对象的方法实现了一个跨平台GUI工具集,它提供了各种用于GUI设计的标准组件。
上面的图是AWT组件内容。
1.组件:组件是图形用户界面的,最小单位之一,它里面不再包含其它的成分。
一般的来说组件的作用是完成与用户的一次交互。
例如:接受用户的一个命令。
结束用户的一个文本输入、向用户显示文字或者是图片等等。
组件是图形用户界面标准化结果。
常见的组件有按钮、文本框、密码框等等。
2.容器:容器是用来组织其它界面成分和元素的单元。
一般说来一个应用程序的图形用户界面首先对应一个复杂的容器。
例如一个窗口。
这个容器的内部包含其他的内容。
如:按钮文本框、菜单等等。
也或者包含有其他的容器。
3.布局管理器:为了使生成的图形用户界面具有良好的平台无关性。
在Java语言当中提供了布局管理器这个功能,来管理组件在容器当中的布局。
而不是直接的设置位置和大小。
布局管理器就是一个指定其位置的工具,实现跨平台时仍然保持组件原来的布局。
Java当中所有和awt相关的类,都放在java.awt这个包中。
awt包是Java基本包中比较大的一个包。
在其中定义了GUIi的组件类以及其他用于构造图形用户界面的类。
如:字体类、绘图类等等。
上图描述了awt中的体系结构,采用从上倒下分层方式组织,所以理解和使用起来比较方便。
从这个体系结构我们可以看出,抽象类Component是所有除了菜单类组件之外AWT组件的父类。
他代表一个能以图形化方式显示出来,并且可以与用户交互的对象,例如:他的子类Button就代表按钮、TextArea就代表文本域、Container就代表容器。
从广义角度来讲,AwT是由各种容器组件构成。
如按钮、文本框等等小组件,窗口、框架等等大组件。
还有负责控制的布局管理器组件。
从刚才的AWT组件类层次中我们可以看出,容器类Container是Component的直接子类。
java语言中awt和swing组件的基本用法AWT (Abstract Window Toolkit)是Java编程语言的一套图形用户界面(GUI)组件集,它提供了创建和管理窗口、按钮、标签等图形组件的能力。
AWT组件是依赖于操作系统的本地GUI组件。
下面是使用AWT组件的基本步骤:1.导入AWT相关的类:通常在使用AWT组件之前,需要导入`java.awt`和`java.awt.event`包中的类。
2.创建一个Frame:使用`Frame`类来创建一个顶级窗口。
3.创建其他组件:使用AWT提供的组件类(如`Button`、`Label`等)来创建其他需要的组件。
4.将组件添加到Frame:使用`add()`方法将其他组件添加到Frame中。
5.设置Frame的布局:使用`setLayout()`方法设置Frame的布局方式,如`FlowLayout`、`GridLayout`等。
6.设置Frame的大小和可见性:使用`setSize()`方法设置Frame 的大小,使用`setVisible(true)`方法设置Frame可见。
7.添加事件监听器:使用`addActionListener()`方法为按钮等组件添加事件监听器。
Swing是Java编程语言中提供的一组GUI组件,它是在AWT的基础上进行了增强和扩展。
Swing组件是纯Java组件,不依赖于操作系统的本地组件,因此具有更高的可移植性和灵活性。
下面是使用Swing组件的基本步骤:1.导入Swing相关的类:通常在使用Swing组件之前,需要导入`javax.swing`包中的类。
2.创建一个JFrame:使用`JFrame`类来创建一个顶级窗口。
3.创建其他组件:使用Swing提供的组件类(如`JButton`、`JLabel`等)来创建其他需要的组件。
4.将组件添加到JFrame中:使用`add()`方法将其他组件添加到JFrame中。
描述awt事件处理机制AWT(Abstract Window Toolkit)是Java的原始图形用户界面工具包,提供了一种供开发人员创建GUI应用程序的方法。
AWT事件处理机制允许开发人员对用户界面中的事件进行响应和处理。
AWT事件处理机制包括以下关键组件:1. 事件对象(Event objects):事件对象代表了用户界面中发生的事件,例如按钮点击、鼠标移动等。
每种类型的事件都有对应的事件对象。
2. 事件源(Event source):事件源是触发事件的组件,例如按钮、文本框等。
当事件发生时,事件源会创建一个事件对象并通过调用监听器的方法将事件对象传递给监听器。
3. 监听器(Listener):监听器是一个接口,定义了一种特定类型的事件处理方法。
开发人员可以为每种类型的事件创建一个监听器,并实现对应的事件处理方法。
4. 注册监听器(Registering listeners):开发人员需要将监听器注册到事件源上,以便在事件发生时能够接收到事件对象。
通常,通过调用事件源的`addXXXListener()`方法来注册监听器。
5. 事件分发器(Event dispatcher):事件分发器负责将事件对象传递给正确的监听器。
当事件发生时,事件源会将事件对象传递给事件分发器,然后事件分发器将根据事件类型寻找相应的监听器,并调用相应的事件处理方法。
6. 事件处理方法(Event handling methods):监听器的事件处理方法用于处理特定类型的事件。
开发人员需要实现这些方法以定义事件发生时的响应行为。
总结起来,AWT事件处理机制的基本流程如下:1. 开发人员创建一个或多个监听器,并实现相应的事件处理方法。
2. 开发人员将监听器注册到所需的事件源上,以便在事件发生时能够接收到事件对象。
3. 当事件发生时,事件源会创建一个事件对象,并将其传递给事件分发器。
4. 事件分发器根据事件类型寻找相应的监听器,并调用监听器的事件处理方法。
第八讲AWT和事件监听打印本页
1 基本概念
下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。
由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。
现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。
1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向用户显示一段文本或一个图形等。
常用的构件有: 按钮构件
项目选择构件:复选框(Checkbox)列表(List或Choice)
文本构件:文本框文本区
对话框构件:对话框文件对话框提示框帮助
菜单构件:弹出式菜单复选框菜单
1.2容器
容器是用来组织构件的单元。
常用的容器有:面板、窗口。
1.3布局管理器:
布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。
AWT提供了几种标准的布局管理器。
1.4事件监听
要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。
AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。
我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。
标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。
2 几个简单的构件和容器
标签(bel)
标签用来显示文本。
演示(StarterApplet)
面板(java.awt.Panel)
面板是一个通用的容器,在上面可以放置各种构件。
我们经常用的Applet类,其实就是面板的一个子类
按钮(java.awt.Button)
按钮具有三维外型,当它们被激活时触发按钮事件,用户可以根据按钮事件,做出适当的反应,比如执行一系列操作等。
演示
3 事件
AWT有两种事件处理模型:一种是基于继承的模型,它在AWT1.1或以前的版本中使用,现在已经逐渐被淘汰;另一种是基于授权的事件模型。
我们主要学习给予授权的事件模型。
授权事件模型的原理很简单:事件源激发事件、事件监听器监听事件,最后执行事件。
可以通过调用addXYZListener(XYZListner)方法向构件注册监听器。
把监听器加到构件中以后,如果构件激发相应类型的事件,
那么监听器接口中的适当方法将被调用。
演示:teach6中的botton。
3.1关于事件的几个概念
事件源:就是触发事件的源头。
不同的事件源触发不同的事件类型,比如一个按钮构件,当点击按钮时,就会触发一个ActionEvent事件;而一个窗口构件,可以触发WindowEvent事件,选择构件则可以触发ItemEvent。
每一种事件类型有其各自的方法,比如:ItemEvent有getItemSelectable()方法,来查找事件源。
当事件源出发了一个事件,Java将自动创建某一类型的事件对象;
事件监听器:事件监听器负责监听事件源发出的事件。
一个事件监听器通常是一个XYZListnener接口。
事件源允许我们向它注册事件监听器,一个事件源可以注册多个事件监听器。
当事件源发生了一个事件,对已经向这个事件源注册的所有事件监听器,事件源会向它们全体发送一个通知。
注册事件:向一个构件注册一个事件,一般格式是:addXYZListener(xYZListener),其中,addXYZListener 中的XYZListener是该事件的监听器接口。
xYZListener是实现了该接口的类的一个对象。
比如,假设b是一个按钮构件,那么,向b注册一个事件的方法是:b.addActionListener(buttonListener);其中,buttonListener
是实现ActionListener接口的一个类的对象,里面实现了actionPerformed()方法。
触发这个事件之后所执行的操作,就是在actionPerformed()方法中实现。
我们可以写一个实现ActionListener接口的类,也可以直接在参数行里实现这个借口。
比如:演示。
取消注册则使用removeXYZListener()方法。
执行事件:事件的执行在事件监听器接口里面的各种方法中实现。
当监听器监听到一个事件时,就会调用它的相应的方法,响应这个事件。
3.2 事件处理的过程综述
总之:
1. 事件源是一个构件,它可以注册事件监听器对象,并向其发送事件对象;
2. 事件发生后,事件源将事件对象发给已经注册的所有监听器;
3. 监听器对象随后会根据事件对象内的相应的方法响应这个事件。
4 几种主要的事件
4.1焦点事件(FocusEvent)
如果构件可以接收用户按键,我们说该构件拥有“焦点”或“输入焦点”(Focus)。
(基础知识P236)。
在任何时刻,每个窗口系统中至多存在一个具有键盘焦点的构件。
具有焦点的构件有显著的特征,比如,具有焦点的按钮的边框内虚线矩形;具有焦点的文本框有一闪烁的光标等。
焦点事件分为FOCUS_LOST和FOCUS_GAINED事件,当焦点从构件A传给构件B时,构件A触发的焦点事件的ID是FOCUS_LOST,而事件B触发的焦点事件的ID是FOCUS_GAINED。
焦点可以用TAB键移动,也可以用鼠标点击使某一构件获得焦点,还可以调用focusRequested()方法。
焦点事件的监听器是FocusListener。
注册焦点事件监听器的方法是:addFocusListener(FocusEvent)
4.2键盘事件(KeyEvent)
在具有键盘焦点的构件中按下或者释放键盘时,会触发键盘事件。
键盘事件的ID有三种:KEY_PRESSED, KEY_ELEASED, KEY_TYPED,分别表示“按下”,“释放”,“按下键盘字符”。
键盘事件的监听器是KeyListener,注册键盘事件的方法是:addKeyListener(KeyEvent)。
里面有三个接口:keyPressed(KeyEvent),keyReleased (KeyEvent),keyTyped(KeyEvent)。
键盘事件是输入事件,是可以消耗的。
(基础知识P194)
4.3鼠标事件和鼠标移动事件(MouseEvent)。
鼠标事件包括:进入/退出、按下/释放、单击等,而鼠标移动事件指鼠标移动和鼠标拖放。
鼠标事件的监听器是MouseListener,而鼠标移动事件的监听器是MouseMotionListener。
4.4窗口事件(WindowEvent)
java.awt.Window和它的扩展类,能激发窗口事件。
窗口事件表示窗口处于激活/无效状态、图标/非图标状态、
打开/关闭或正在关闭过程中。
窗口事件的监听者是WindowListener。
小结
1.这一讲,我们学习了几个简单的构件,包括标签、面板和按钮。
2.几个生要的概念:构件,容器,局管理器和事件监听。
习题
1.容器和普通构件在功能上有什么不同;主要的容器有哪些?
2.简述授权事件模型的事件处理过程
3.编一个小程序:一个面板中含一个按钮,点击按钮时,显示“botton pressed”字样。