8.AWT和事件监听

更新时间:2024-04-10 12:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第八讲 AWT和事

件监听

打印本页

1 基本概念

下面几讲,我们就来学习AWT的各种容器和组件,并重点学习AWT的事件监听和处理方法。由于学习事件需要用到一些简单的构件,我们先学习几个简单的构件。现在,我们先来介绍AWT里面几个重要的概念:构件,容器,布局管理器和事件监听(AWT P4)。

1.1构件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 构件的作用是完成与用户的一次交互,包括接受用户的一个命令,接受用户的一个文本输入,向 用户显示一段文本或一个图形等。常用的构件有: 按钮构件

项目选择构件:复选框(Checkbox) 列表(List或Choice) 文本构件:文本框文本区

对话框构件:对话框文件对话框提示框帮助 菜单构件:弹出式菜单复选框菜单 1.2容器

容器是用来组织构件的单元。常用的容器有:面板、窗口。 1.3布局管理器:

布局管理器用来布置容器和容器中的各个构件,比如他们的大小、位置等。AWT提供了几种标准的布局管理器。 1.4事件监听

要使点击鼠标、敲打键盘等实现特定的动作,我们需要捕捉事件并且加以实现。AWT里典型的事件有:鼠标事件、鼠标移动事件、键盘事件、窗口事件等。

我们通过学习最基本的构件和容器(标签、按钮和面板)来粗略理解这些概念。标签和按钮是显示标签的简单构件;而面板是AWT提供的最基本的容器。

2 几个简单的构件和容器 标签(java.awt.Label) 标签用来显示文本。 演示(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”字样。

本文来源:https://www.bwwdw.com/article/3g3r.html

Top