AWT事件处理机制
java面向对象填空题(含答案)

一、java面向对象(50个)易:1.对象是由一组属性和对这组属性进行(操作)的一组服务组成的。
2.对象是指(具体)的事物,而类是指一类具有某种共性的事物。
3.由类来确定具体对象的过程称为类的(实例化)。
4.一个类由类声明和(类体)两部分组成。
5.当一个类的类修饰符为( final )时,说明该类不能被继承,即不能有子类。
6.Java程序在extends之后只能有一个父类,即extends只能实现(单)继承。
7.在Java中只能实现单继承,但可通过(接口)实现多重继承。
8.一个类可实现多个接口,各接口名是以(,)分隔。
9.在类体中声明的变量称为(成员)。
10.在方法中声明的变量称为(局部变量)。
11.在Java程序中,使用关键字(this)来引用当前对象。
12.一个方法的定义是由方法声明和(方法体)两部分组成。
13.方法声明包括(方法名)、返回类型和形式参数。
14.构造方法的方法名要求与(类名)相同,而且无返回值。
15.面向对象的三个特性是:封装性、继承性和(多态性)。
16.在Java中,通过对象的(封装),实现了模块化和信息隐藏。
17.两个方法具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同,则称为方法的(重写)。
18.Java中通过关键字(super)来实现对父类成员的访问。
19.Java用( extends)关键字指明继承关系。
20.在Java中,用关键字(abstract)来修饰一个类,则该类为抽象类。
21.若某个类包含了抽象方法,则该类必须被定义为(抽象)类。
22.接口的定义,需使用关键字(interface)来声明。
23.声明父类时,需使用关键字(extends)来实现。
24.java语言中接口是特殊的类,其中包含常量和(抽象)方法。
25.当要引用包中所有的类时,类名可以用通配符(* )号代替。
26.一个类要从另一个类继承变量和方法,必须使用关键字(extends)。
27.(抽象)类不能被实例化,它不具备实际功能,只用于衍生子类。
11.2事件与常用组件介绍

事件驱动程序设计图形用户界面是静态的,它应该能够响应用户的操作。
比如,当用户在GUI上输入一个字符或点击鼠标,都会发生事件,程序根据事件类型作出反应就是事件处理。
1.1 事件处理模型与事件类在Java 1.1版之前事件处理采用事件传递模型,这种方法有一定的缺点,因此从Java 1.1版开始,Java的事件处理采用了新的事件处理模型,我们称为事件代理模型(event delegation model)。
尽管在Java 2中仍然支持两种模型,但推荐使用新的事件模型。
所谓事件代理模型就是将事件的处理从事件源对象代理给一个或多个称为事件监听器(listener)的对象,事件由事件监听器处理。
事件代理模型把事件的处理委托给外部实体进行处理,实现了事件源和监听器分离的机制。
事件代理模型涉及到三种对象:事件源、事件和事件监听器。
①事件源(event source):产生事件的对象,一般来说可以是组件,如按钮、对话框等。
当这些对象的状态改变时,就会产生事件。
事件源可以是可视化组件,也可以是计时器等不可视的对象。
②事件(event):描述事件源状态改变的对象。
如按钮被点击,就会产生ActionEvent 动作事件。
③事件监听器(listener):接收事件并对其进行处理的对象。
事件监听器对象必须是实现了相应接口的类的对象。
Java的事件处理模型如图1所示。
首先在事件源上注册事件监听器,当用户行为触发一个事件时,运行时系统寻找事件监听器对象来处理事件。
图 1 Swing事件处理模型为了实现事件处理,Java定义了大量的事件类,这些类封装了事件对象。
Swing组件可产生多种事件,如点击按钮、选择菜单项会产生动作事件(ActionEvent),关闭窗口会产生窗口事件(WindowEvent)等。
所有事件类的根类是java.util.EventObject类,该类的定义为:package java.util;public class EventObject implements java.io.Serializable {protected transient Object source;public EventObject(Object source) {if (source == null)throw new IllegalArgumentException("null source");this.source = source;}public Object getSource() {return source;}294public String toString() {return getClass().getName() + "[source=" + source + "]";}}其中,getSource()方法是最重要的方法,它返回触发事件的事件源对象,注意它的返回类型是Object。
TP6-事件机制

回顾
• 抽象窗口工具包(AWT)是一组类,用来创建图形用 抽象窗口工具包( )是一组类, 户界面,并能够通过键盘和鼠标响应用户的操作。 户界面,并能够通过键盘和鼠标响应用户的操作。 • 两种常用容器类:框架(Frame类)和面板(Panel类) 两种常用容器类:框架( 类 和面板( 类 • AWT支持下列类型的组件:标签、文本域、文本区、 支持下列类型的组件: 支持下列类型的组件 标签、文本域、文本区、 按钮、复选框、列表框等。 按钮、复选框、列表框等。 • 布局管理器类提供控制 GUI 组件物理布局的一种方式。 组件物理布局的一种方式。
大连东方北佳职业培训学校
2
2
目标 • • • • • 事件控制的要点 AWT 事件结构 基本事件控制 使用多个监听器 匿名类
大连东方北佳职业培训学校
3
3
事件控制的要点 • Java 最新的事件处理方法是基于授权事件 模型 • 事件源生成事件并将其发送至一个或多个 监听器 • 监听器简单地等待,直到它收到一个事件。 监听器简单地等待,直到它收到一个事件。 一旦事件被接受,监听器将处理这些事件, 一旦事件被接受,监听器将处理这些事件, 然后返回。 然后返回。
接收到键盘输入时会生成此事件。 接收到键盘输入时会生成此事件。Component 拖动、移动、单击、 拖动、移动、单击、按下或释放 Component 鼠标或在鼠标进入或退出一个组 件时,会生成此事件。 件时,会生成此事件。 将组件添加至容器或从中删除时 Container 会生成此事件。 会生成此事件。 、 在文本区或文本域的文本改变时 TextField、 TextArea 会生成此事件 。 当一个窗口激活、关闭、失效、 当一个窗口激活、关闭、失效、 Window 恢复、最小化、 恢复、最小化、打开或退出时会 生成此事件。 生成此事件。
《Java基础程序设计》_课后习题

第一章思考题】1、简述path 环境变量的作用。
2、请说说你对JVM 的理解。
答案】1、path 环境变量是系统环境变量中的一种,它用于保存一系列可执行文件的路径,每个路径之间以分号分隔。
当在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找是否存在该文件,如果不存在会继续在path 环境变量中定义的路径下去寻找这个文件,如果仍未找到,系统会报错。
2、JVM 是Java Virtual Machine 的缩写,全称是Java 虚拟机。
Java 语言的一个非常重要的特性就是跨平台性,而Java 虚拟机是实现这一特性的关键。
不同的操作系统需要使用不同版本的虚拟机,这种方式使得Java语言能够“一次编写,到处运行”。
Java语言编译程序只需生成在Java 虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
第二章【思考题】1、请简述& 与&& 的区别。
2、简述break、continue 和return 语句的区别。
【答案】1、&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
当运算符“ &”和“ && ”的右边为表达式时,使用“ &”进行运算,不论左边为true 或者false,右边的表达式都会进行运算。
如果使用" && ”进行运算,当左边为false时,右边的表达式则不会进行运算,因此“ && ”被称作短路与。
2、break 语句:在switch 条件语句和循环语句中都可以使用break 语句。
当它出现在switch 条件语句中时,作用是终止某个case并跳出switch结构。
AWT事件处理

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第06章--1(AWT与Swing)

• • 视图(view):它专门负责组件的绘制工作,主要涉及 paint()方法。MVC设计范式的最大优点是一个模型可以 有多个视图,每个视图是一个不同侧面但内容却是完整的。 • 一个模型的几个视图都是从不同侧面、用完整的内容来描 述同一个模型。当模型的控制器要修改其内容时,均会通 知这每个视图,它们都会自动地更新自己的视图显示。 • • 控制器(controller):专门负责管理和处理组件所接 收到的事件,这些事件可能来自用户的操作。如键盘输入、 鼠标点击和拖放等,也可能来自系统,如系统计时器发出 的事件。 • 视图和其控制器之间的通信不仅频繁且非常复杂,因此 JFC系统把两者封装成一个整体。
• • 模型(model):模型负责获取和管理组件的状态,用户若 需要询问组件的状态时,实际上是询问该组件的模型。 • 若要询问Swing型按钮组件(JButton 类的一个对象)的状 态,可调用JButton 类的父类javax.swing.AbstractButton所 提供的isSelected()方法,它定义为: – public boolean isSelected() { ... } – 该方法返回一个逻辑值,若为true则该按钮组件被压下,反 之返回false则按钮是松开状态。 • javax.swing包中的各种组件,对于描述该组件状态和内容的 模 型 都 是 用 以 Model 结 尾 的 接 口 实 现 , 例 如 , 对 于 按 钮 在 javax.swing包中有一个如下定义的接口: – public interface ButtonModel extends ItemSelectable { ... } • 每个JButton类的对象都保存着一个表示该按钮组件模型的对 象,调用其父类AbstractButton的方法就可以得到它,即: – JButton b = new JButton( "确定" );
GUI练习题

GUI练习题图形与⽤户界⾯设计练习题⼀.选择题1.Window是宣⽰屏上独⽴的本机窗⼝,它独⽴于其它容器,Window的两种形式是()A、JFrame和JDialogB、JPanel和JFrameC、Container和ComponentD、LayoutManager和Container2.框架(Frame)的缺省布局管理器就是()A、流程布局(Flow Layout)B、卡布局(Card Layout)C、边框布局(Border Layout)D、⽹格布局(Grid Layout)3.java.awt包提供了基本的java程序的GUI设计⼯具,包含控件、容器和()A、布局管理器B、数据传送器C、图形和图像⼯具D、⽤户界⾯构件4.所有Swing构件都实现了()接⼝A、ActionListenerB、SerializableC、AccessibleD、MouseListener5.事件处理机制能够让图形界⾯响应⽤户的操作,主要包括()A、事件B、事件处理C、事件源D、以上都是6.Swing采⽤的设计规范是()A、视图----模式----控制B、模式-----视图---控制C、控制-----模式----视图D、控制----视图-----模式7.抽象窗⼝⼯具包( )是java提供的建⽴图形⽤户界⾯GUI的开发包.A、AWTD、/doc/75811ab665ce0508763213fc.html ng8.关于使⽤Swing的基本规则,下列说法正确的是( )A、Swing构件可直接添加到顶级容器中B、要尽量使⽤⾮Swing的重要级构件C、Swing的JButton不能直接放到Frame上D、以上说法都对9.下列不属于java.event包中定义的事件适配器的是( )A、构件适配器B、焦点适配器C、键盘适配器D、标签适配器10.( )布局管理器使容器中各个构件呈⽹格布局,平均占据容器空间。
A、FlowLayoutB、BorderLayoutC、GridLayoutD、CardLayout11.容器被重新设置⼤⼩后,哪种布局管理器的容器中的组件⼤⼩不随容器⼤⼩的变化⽽改变( )A、CardLayoutB、FlowLayoutC、BorderLayoutD、GridLayout12.paint()⽅法使⽤哪种类型的参数A、GraphicsB、Graphics2DC、StringD、 Color13.监听事件和处理事件( )A、都由Listener完成B、都由相应事件Listener处注册过的组件完成C、由Listener和组件分别完成D、由Listener和窗⼝分别完成14.下列哪个属于容器的组件( )A、JFrameD、 JApplet15.下列不属于容器的是( )A、JWindowB、TextBoxC、JPanelD、JScrollPane16.下⾯哪个语句是正确的( )A、Object o=new JButton(″A″);B、JButton b=new Object(″B″);C、JPanel p=new JFrame();D、JFrame f=new JPanel();⼆.填空题1、在需要⾃定义Swing构件的时候,⾸先要确定使⽤那种构件类作为所定制构件的______,⼀般继承Jpanel类或更具体的Swing类.2、Swing的事件处理机制包括_____、事件和事件处理者。
AWT编程

– title:指定该对话框的窗口标题。 – modal:指定该对话框是否是模式的,可以是true或false。
FileDialog
• Dialog类还有一个子类:FileDialog,它代 表一个文件对话框,用于打开、或者保存 文件,FileDialog也提供了几个构造器,分 别可支持parent、title和mode三个构造参数, 其中parent、title指定文件对话框的所属父 窗口和标题,而mode用于指定该窗口用于 打开文件、或保存文件,该参数支持如下 两个参数值:FileDialog.LOAD、 FileDialog.SAVE。
BorderLayout(con.)
• BorderLayout布局格式:当改变容器大小 时
– 当某个区域没有组件时,它的空间会被自动占 满。
– North, South和CentNero区rth域水平调整 – East, West和Center区域垂直调整
Center
South
East West
AWT的问题
• 使用AWT作出的图形用户界面在所有平台 上都显得很丑陋,功能也非常有限。
• AWT为了迎合所有主流操作系统的界面设 计,AWT组件只能使用这些操作系统上图 形界面组件的交集,所以不能使用特定操 作系统上复杂的图形界面组件,最多只能 使用四种字体。
• AWT用的是非常笨拙的,非面向对象的编 程模式。
绝对定位
• Java也提供了那种拖控件的方式,即Java 也可以对GUI组件进行绝对定位。在Java 容器中采用绝对定位的步骤如下:
– (1)将Container的布局管理器设成null: setLayout(null)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java事件
AWT事件处理机制
ActionEvent
button Frame
ActionPerformed(ActionEvent )
事件源
监听器
AWT事件处理机制
//: Button1.java // Putting buttons on an applet import java.awt.*; import java.applet.*; public class Button1 extends Applet { Button b1 = new Button("Button 1"), b2 = new Button("Button 2"); public void init() { add(b1); add(b2); } } ///:~
层次模型(JDK1.0)
这种模型有一个显著的优点: 它简单,而且非常适合面向对象的编程环境; 说到底,所有的组件都继承了ponent类, 而handleEvent()就在ponent类中。 然而,这种模型也存在缺点: 事件只能由产生这个事件的组件或包含这个组 件的容器处理。这个限制违反了面向对象编程的一个 基本原则:功能应该包含在最合适的类中。而最适合 处理事件的类往往并不是源组件的容器层次中的成员。 大量的CPU周期浪费在处理不相关的事件上。任何对 于程序来说不相关或者并不重要的事件会沿容器层次 一路传播,直到最后被抛弃。不存在一种简单的方法 来过滤事件。
Methods actionPerformed(Actio nEvent) itemStateChanged(Item Event) mouseDragged(MouseEve nt) mouseMoved(MouseEvent) mousePressed(MouseEve nt) mouseReleased(MouseEv ent) mouseEntered(MouseEve nt) mouseExited(MouseEven t) mouseClicked(MouseEve nt) keyPressed(KeyEvent)
为了处理事件,你必须定义接收这个事件的组 件的子类,或者在基容器创建一个庞大的 handleEvent()方法。 委托事件模型是在JDK1.1中引入的。在这个模型中, 事件被送往产生这个事件的组件,然而,注册一个或 多个称为监听者的类取决于每一个组件,这些类包含 事件处理器,用来接收和处理这个事件。采用这种方 法,事件处理器可以安排在与源组件分离的对象中。 监听者就是实现了Listener接口的类。
定义多重接口 implements MouseMotionListener, MouseListener 声明多个接口时,可以用逗号隔开。 监听多个源 f.addMouseListener(this); f.addMouseMotionListener(this);
事件Adapters(适配器)
委托模型(JDK1.1或更高版本)
优点 事件不会被意外地处理。 有可能创建并使用适配器 (adapter)类对 事件动作进行分类。 委托模型有利于把工作分布到各个类中。 缺点 不容易将JDK1.0代码移植到JDK1.1上。
Category Action Item Mouse motion
Interface Name ActionListene r ItemListener MouseMotionLi stener
捕获事件
public boolean action(Event evt, Object arg) { if(evt.target.equals(b1)) getAppletContext().showStatus("Button 1"); else if(evt.target.equals(b2)) getAppletContext().showStatus("Button 2"); // Let the base class handle it: else return super.action(evt, arg); return true; // We've handled it here } } ///:~
AWT事件处理机制
action()拥有两个自变量:第一个是事件的类 型,包括所有的触发调用action()的事件的有 关信息。例如鼠标单击、普通按键按下或释 放、特殊按键按下或释放、鼠标移动或者拖 动、事件组件得到或丢失焦点,等等。第二 个自变量通常是我们忽略的事件目标。第二 个自变量封装在事件目标中,所以它像一个 自变量一样的冗长。 需调用action()时情况非常有限:将控件置入 窗体时,一些类型的控件(按钮、复选框、 下拉列表单、菜单)会发生一种“标准行 动”,从而随相应的Event对象发起对action() 的调用。比如对按钮来说,一旦按钮被按下, 而且没有再多按一次,就会调用它的action() 方法。这种行为通常正是我们所希望的,因 为这正是我们对一个按钮正常观感。但正如 本章后面要讲到的那样,还可通过 handleEvent()方法来处理其他许多类型的事件。
Mouse button
MouseListener
Key
KeyListener
多监听者
多监听者可以使一个程序的不相关部分执行同样的 动作。 动作。 事件发生时, 事件发生时,所有被注册的监听者的处理器都会被 调用 AWT事件监听框架事实上允许同一个组件带有多 个监听者。一般地,如果你想写一个程序,它基于 一个事件而执行多个动作,把那些行为编写到处理 器的方法里即可。然而,有时一个程序的设计要求 同个上下文敏 感的帮助系统加到一个已存在的程序中。 监听者机制允许你调用addXXXlistener方法任意 多次,而且,你可以根据你的设计需要指定任意多 个不同的监听者。事件发生时,所有被注册的监听 者的处理器都会被调用。
捕获事件
public boolean action (Event evt, Object arg) { if(arg.equals("Button 1")) getAppletContext().showStatus("Button 1"); else if(arg.equals("Button 2")) getAppletContext().showStatus("Button 2"); // Let the base class handle it: else return super.action(evt, arg); return true; // We've handled it here }
AWT事件处理机制
什么是事件? 事件-描述发生了什么的对象 事件源-事件的产生器 事件处理器-接收事件、解释事 件并处理用户交互的方法
AWT事件处理机制
事件源是一个事件的产生者。例如,在 Button组件上点击鼠标会产生以这个 Button 为源的一个ActionEvent. 这个 ActionEvent实例是一个对象,它包含关 于刚才所发生的那个事件的信息的对象 事件处理器就是一个接收事件、解释事 件并处理用户交互的方法。
你定义的Listener可以继承Adapter类,而且只需重写你所需要的方 法。例如:实现每个Listener接口的所有方法的工作量是非常大 的,尤其是MouseListener接口和ComponentListener接口。 以MouseListener接口为例,它定义了如下方法: mouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent) 为了方便起见,Java语言提供了Adapters类,用来实现含有 多个方法的类。这些Adapters类中的方法是空的。 你可以继承Adapters类,而且只需重写你所需要的方法。