第八讲 AWT和事件监听

合集下载

Java考试简答题

Java考试简答题

简答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表达式。

当事件发生时,事件源会调用委托对象进行处理。

AWT事件处理

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基础入门》_课后习题答案大一计算机专业8

《Java基础入门》_课后习题答案大一计算机专业8

《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 中的布局管理器有哪些。

Java图形用户界面ppt课件

Java图形用户界面ppt课件
布局管理器主要包括:FlowLayout,BorderLayout, GridLayout,CardLayout,GridBagLayout:
18
1.4 布局管理器-FlowLayout
1. FlowLayout
FlowLayout 是Panel,Applet的缺省布局管理器。其组件的放 置规律是从上到下、从左到右进行放置,如果容器足够宽,第一 个组件先添加到容器中第一行的最左边,后续的组件依次添加到 上一个组件的右边,如果当前行已放置不下该组件,则放置到下 一行的最左边。
11
1.2 组件和容器
容器(Container)也是一个类,实际上是Component的 子类,因此容器本身也是一个组件,具有组件的所有 性质,但是它的主要功能是容纳其它组件和容器。
布局管理器(LayoutManager):每个容器都有一个布 局管理器,当容器需要对某个组件进行定位或判断其 大小尺寸时,就会调用其对应的布局管理器。
Java图形用户界面
Java界面设计的用途
Java 的图形界面工具包,可以用于工具类软 件开发、管理类软件开发、通用客户端开发 、银行客户端软件开发、Eclipse 插件开发等 方向。在许多知名的大型软件中,都能够见 到 Java 的身影,如思维导图软件、Eclipse、 IDEA 开发环境等。
5
如何选择 GUI 工具包
AWT、Swing、SWT是 Java 中的三大 GUI 工具包,其中 Swing 是最灵活、 强大的 GUI 工具包,所以在界面开发 中,首选 Swing ,它可以胜任绝大多 数开发工作。
6
本讲内容
1、AWT事件处理模型 2、布局管理器 3、Swing简介 4、Swing组件和容器
为了使我们生成的图形用户界面具有良好的平台无关 性,Java语言中,提供了布局管理器这个工具来管理 组件在容器中的布局,而不使用直接设置组件位置和 大小的方式。

java_swing面试题目(3篇)

java_swing面试题目(3篇)

第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类创建复选框,它们之间互不影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第八讲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”字样。

相关文档
最新文档