Java第06章--2(布局与事件处理)
java 事件处理机制

Java的事件处理机制是一种用于处理用户界面事件和输入事件的机制。
它允许程序员注册事件监听器并定义事件处理程序,以便在特定事件发生时自动调用这些处理程序。
在Java中,事件处理涉及三个主要组件:事件源:这是事件发生的对象,例如按钮或文本框。
事件监听器:这是实现了特定事件监听器接口的对象,该接口定义了事件发生时要调用的方法。
事件处理程序:这是在事件发生时自动调用的方法。
Java提供了许多预定义的事件监听器接口,例如ActionListener、KeyListener、MouseListener等,这些接口在java.awt和javax.swing包中定义。
要处理事件,程序员需要执行以下步骤:创建事件源对象,例如按钮或文本框。
创建实现了相应事件监听器接口的对象。
将事件监听器添加到事件源中。
这通常通过调用事件源的addXXXListener()方法完成,其中XXX是监听器接口的名称(例如ActionListener)。
在实现的事件监听器接口的方法中编写事件处理代码。
这些方法通常具有与接口名称相同的方法名,并在方法签名中包含事件源作为参数。
例如,ActionListener 接口定义了一个actionPerformed()方法,该方法在按钮被单击时被调用。
当事件发生时,事件源将自动调用相应的事件监听器方法,并传递一个包含有关事件信息的Event对象作为参数。
事件监听器方法可以根据需要使用此Event对象来获取有关事件的详细信息。
总之,Java的事件处理机制是一种灵活和可扩展的机制,它允许程序员轻松地处理各种用户界面和输入事件。
通过使用预定义的事件监听器接口和实现相应的方法,程序员可以轻松地编写事件处理代码,并确保在需要时自动执行它们。
Java语言与网络应用6-2常用组件及其事件处理3

JPanel类
1.JPanel常用的构造器方法 (1)JPanel() (2)JPanel(LayoutManager layout)
要使用文件框,必须引入javax.swing.filechooser.*包。 1.构造器方法JFileChooser() 2.JFileChooser常用的成员方法 (1)public void setCurrentDirectory(File dir)
(2)public int showOpenDialog(Component parent)
和使用 掌握自定义对话框(JDialog)的构造器方法及常用 方法的使用 能编写对话框程序应用程序.
标准对话框(JOptionPane)
JOptionPane可以显示三种形式的标准对话框
1. 标准信息显示对话框 2. 标准信息提示对话框 3. 标准信息输入对话框
1 标准信息显示对话框
实战演练
完成一个简单计算器,要求具备windows系统中计 算器的界面和功能。
小结
1. 2. 3. 4. 标准对话框(JOptionPane)及其使用 自定义对话框(JDialog)及其使用 文件框(JFileChooser)及其使用 容器(JPanel)及其使用
标准信息显示对话框,只有1个确定按钮
• 其主要作用是显示信息。当按下确定键后,系统会关闭
该对话框。并不返回任何值。
OptionPane.showMessageDialog(Component
parent,Object message,String title, int type)
java事件处理机制的基本原理

java事件处理机制的基本原理
Java事件处理机制是基于事件监听器(EventListener)和事件
源(EventSource)的机制。
事件源是触发事件的对象,例如按钮、窗口等。
当事件源上发生某个事件时,事件源会创建一个对应的事件对象,并将该事件对象传递给监听器。
事件监听器是处理特定事件的对象,它实现了对应事件监听器接口。
例如,按钮点击事件的监听器需要实现ActionListener
接口。
当事件源触发事件时,它会将该事件对象传递给所有注册了监听器的对象,监听器会根据事件对象中的信息执行相应的操作。
基本原理如下:
1. 事件源注册监听器:事件源通过调用addXXXListener()方法,将监听器注册到事件源上。
2. 事件源触发事件:当事件源上发生了特定事件(例如按钮被点击),它会创建一个对应的事件对象,并将该事件对象传递给所有注册了监听器的对象。
3. 监听器接收事件:注册了监听器的对象会收到事件对象,并根据事件对象中的信息执行相应的操作。
4. 事件处理:监听器根据事件对象中的信息,执行一系列操作来处理事件。
事件处理机制的优点是低耦合性和可扩展性。
事件源和监听器
是通过接口进行交互,使得它们之间没有强制的依赖关系,从而实现了低耦合性。
同时,事件监听器机制支持多个监听器同时监听同一个事件源,可以方便地扩展和修改事件的处理方式。
Java语言程序设计(第3版)(2018年清华大学出版社出版

作者简介
沈泽刚,1964年生,男,汉族,渤海大学信息科学与技术学院副教授、硕士生导师,研究方向为计算机应用 技术。
谢谢观看
2018年4月1ห้องสมุดไป่ตู้,该教材由清华大学出版社出版。
内容简介
全书共18章,主要内容如下:
第1章介绍Java语言的起源和发展、Java开发环境的构建、简单Java程序的开发和运行、程序设计风格与文 档以及集成开发环境Eclipse的使用。
第2章介绍数据类型、常用运算符、表达式以及数据类型的转换等。
第3章介绍程序的流程控制结构,包括选择结构和循环结构。重点介绍if结构、switch结构、while循环、 do-while循环以及for循环结构。
Java语言程序设计(第3版)(2018 年清华大学出版社出版
2018年清华大学出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
《Java语言程序设计(第3版)》是由沈泽刚主编,2018年清华大学出版社出版的21世纪高等学校计算机类 课程创新规划教材。该教材可作为高等院校计算机专业或相关专业的“Java程序设计”或“面向对象程序设计” 课程的教材,也可作为Java认证考试及编程爱好者的参考资料。
第7章介绍类的继承与多态,其中包括继承性、封装性、多态性以及对象转换等。
第8章介绍Java常用核心类,包括Object类、Math类、基本数据类型包装类等,另外介绍了Java8新增的日 期-时间API相关的类。
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
该教材有配套教材——《Java语言程序设计(第3版)学习指导与习题解析》,书中提供了学习指导、实训 任务及编程练习的参考答案。
解析JAVA程序设计第六章课后答案

第6章习题解答1.简述Java中设计图形用户界面程序的主要步骤。
对于设计图形用户界面程序而言,一般分为两个步骤:第一步,设计相应的用户界面,并根据需要对相关的组件进行布局;第二步,添加相关的事件处理,如鼠标、菜单、按钮和键盘等事件。
2.试说明容器与组件之间的关系。
组件(component)是图形用户界面中的各种部件(如标签、按钮、文本框等等),所有的组件类都继承自JComponent类。
容器(container)是用来放置其他组件的一种特殊部件,在java中容器用Container类描述。
3.阅读下面程序,说明其运行结果和功能。
//filename:MyFrame.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyFrame{public static void main(String agrs[]){JFrame f=new JFrame("简单窗体示例");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel l=new JLabel("习题1");f.getContentPane().add(l,BorderLayout.CENTER);f.pack();f.setVisible(true);}}程序的运行结果如下:4.阅读下面程序,说明其运行结果和功能。
//filename:TestButton.javaimport java.awt.*;import javax.swing.*;public class TestButton extends JFrame{JButton b1,b2;TestButton(String s){super(s);b1=new JButton("按钮1");b2=new JButton("按钮2");setLayout(new FlowLayout());add(b1);add(b2);setSize(300,100);setVisible(true);}public static void main(String args[]){ TestButton test;test=new TestButton("测试按钮"); }}程序的运行结果如下:5.阅读下面程序,说明其运行结果和功能。
java语言程序设计第6章

第6章 常见错误和异常处理
6.2.2 Exception类
Java语言的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定 的运行错误。所有的Java异常类都是系统类库中的Exception类的子类 。 Exception类有若干子类,每一个子类代表了一种特定的运行时错误。这些 子类有些是系统事先定义好并包含在Java类库中的,称为系统定义的运行异 常。 系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作 系统错误甚至是整个系统的瘫痪,所以需要定义异常类来特别处理。 常见的系统定义异常如下: (1)ArithmeticException:数学错误。 (2)ArrayIndexOutOfBoundsException:数组下标越界使用。 (3)ClassNotFoundException:未找到欲使用的类。 (4)FileNotFoundException:未找到指定的文件或目录。
第6章 常见错误和异常处理
6.2.4 多异常的处理
如果所有的catch语句都不能与当前的异常对象匹配,则说明当前方法不能 处理这个异常对象,程序流程将返回到调用该方法的上层方法。如果这个上 层方法中定义了与所产生的异常对象相匹配的catch语句,流程就跳转到这 个catch语句中,否则将继续回溯更上层的方法。 如果所有的方法中都找不到合适的catch语句,则由Java运行系统来处理这 个异常对象。此时通常会中止程序的执行,退出虚拟机返回操作系统,并在 标准输出上打印相关的异常信息。 如果try语句体中所有语句的执行都没有引发异常,则所有的catch语句体都 会被忽略而不予执行。 catch语句体中的语句应根据异常的不同而执行不同的操作,比较通用的操 作是打印异常和错误的相关信息,包括异常名称、产生异常的方法名等。 由于异常对象与catch语句的匹配是按照catch语句的先后排列顺序进行的, 所以在处理多异常时应注意认真设计各catch语句的排列顺序。一般来说, 将处理较具体和较常见的异常的catch语句应放在前面,而可以与多种异常 相匹配的catch语句应放在较后的位置。此外,不能将子类异常的catch语句 放在父类的后面,否则在编译时会产生错误。
java事件处理PPT课件

11.1 事件处理机制
先了解“事件”、“事件源”、“事件处理”及 “事件监听”的含义,再遵循一套固定的模式把 事件处理机制应用起来。 示例程序演示…(EventDemo.java)
11.1.1 Java的事件处理机制
事件:
用户在图形界面上进行的各种操作,如按下按钮、选 中下拉列表的某一项、点击某个菜单项…
按钮、菜单、双击列表 控件状态改变 控件加入或删除 复选框、列表、复选菜单 键盘输入 鼠标输入 鼠标拖拽 文本区文本改变 Window状态改1变0
11.1.2 事件处理类和接口(部分)
Event 类
ActionEvent ComponentEvent
FocusEvent ItemEvent WindowEvent TextEvent MouseEvent
事件源:
发生事件的这个东东,如按钮、下拉列表…
11.1.1 Java的事件处理机制-2
事件监听:
进行监视,随时准备着,一旦有事件发生,马上通知 对应的“负责人”来处理。
事件处理:
处理事件的“负责人”! 实际上,Java已经把所有 可能发生的事情都分析好了,已经给每个事件都定义 了专门处理它的类和接口,所有事件处理的类和接口 都在java.awt.event包中。
谁出事儿了? 想让程序对用户的哪些操作做出反应?明确事件 源!比如btnOK,exitItem… 谁负责?给他派任务! Java规定这种事件由哪个接口负责处理,就自定 义一个类实现该接口。在相应的方法体里把事件 该如何处理写清楚。 安排一个有能力处理的人随时盯梢~ 用这个自定义类创建对象,给事件源添加事件监 听,指明事件发生时找该对象处理。
}
catch(Exception e)
Java中的GUI界面设计和事件处理入门

Java中的GUI界面设计和事件处理入门一、引言Java是一种面向对象的编程语言,具有广泛的应用领域。
在软件开发过程中,GUI界面设计和事件处理是非常重要的一部分。
本文将介绍Java中的GUI界面设计和事件处理的入门知识,以帮助读者了解和掌握这方面的技术。
二、GUI界面设计基础GUI(Graphical User Interface,图形用户界面)是指通过图形、图像和动画等方式来显示信息,提供用户与计算机之间的交互。
在Java中,可以使用Swing和JavaFX等库来进行GUI界面设计。
1. 布局管理器在GUI界面设计中,布局管理器用于管理组件的布局方式。
Java提供了多种布局管理器,如FlowLayout、BorderLayout、GridLayout和GridBagLayout等。
使用不同的布局管理器可以实现不同的界面布局效果。
2. 组件组件是GUI界面的基本元素,可以是按钮、文本框、标签、列表框等。
在Java中,可以使用JButton、JTextField、JLabel和JList等类来创建各种组件。
可以设置组件的属性,如大小、位置和样式等。
3. 事件监听器事件监听器用于捕捉用户操作产生的事件,并做出相应的处理。
在Java中,可以使用addActionListener()方法为组件添加监听器,响应用户的点击事件。
事件监听器可以以匿名内部类的形式实现,也可以作为单独的类来处理。
三、GUI界面设计实例下面以一个简单的登录界面为例,介绍如何使用Java中的GUI 界面设计来创建一个具有交互功能的窗体。
1. 导入必要的类库首先需要导入javax.swing和java.awt等类库,以便使用其中的类和方法。
2. 创建窗体可以通过继承JFrame类来创建一个窗体对象,然后设置窗体的标题、大小和关闭方式等属性。
3. 添加组件可以使用JLabel、JTextField和JButton等组件类来创建对应的界面元素,并设置它们的属性和布局。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、外观的管理与控制 ——BorderLayout
BorderLayout布局方式提供了更复杂的布局控制方法,它 包括5个区域:North, South, East, West和Center,其方位依据 上北-下南-左西-右东。当容器的尺寸发生变化时,各组 件的相对位置不变,但中间部分组件的尺寸会发生变化,南 北组件的高度不变,东西组件的宽度不变。 BorderLayout类有二种构造方法:
public BorderLayout()
各组件间的水平和竖直间距为缺省值0个象素。
public BorderLayout(int horizontalGap, int verticalGap)
West
North East Center South
各组件间的水平和竖直间距为指定值。
例子:例6.8,P370:BorderLayoutDemo.java
4、外观的管理与控制 ——CardLayout
CardLayout类有二种构造方法:
public CardLayout()
组件距容器左右边界和上下边界的距离为缺省值0个象素。
public CardLayout(int horizontalGap, int verticalGap)
组件距容器左右边界和上下边界的距离为指定值。 与BorderLayout类和GridLayout类相类似,每张牌中只能放置 一个组件,如果想在一张牌放置多个组件,则必须先在该牌放 一个容器,再将多个组件放在该容器中。 采用CardLayout布局方式时,向容器中添加组件时可以为组 件取一个名字,以供更换显示组件时使用: add(String, Component);
4、外观的管理与控制 ——GridBagLayout
GridBagLayout布局方式是AWT中最灵活、同时也是最复杂的 一种布局方式。与GridLayout相同,它也是将容器中的组件按照 行、列的方式放置,但各组件所占的空间可以互不相同。 GridBagLayout根据对每个组件所施加的空间限制、每个组件 自身所设定的最小尺寸和最佳尺寸来为每个组件分配空间。对组 件施加空间限制是通过类GridBagConstraints(有很多静态字段) 来实现的。 每个构件后都跟随一个GridBagLayout对象实体, 来决定构件 的外观. 创建:GridBagLayout myLayout=new GridBagLayout();
§6.5
事件与事件处理
5、事件与事件处理
事件是一个描述正在发生事情的对象,它用来描述发生在 用户界面上的、用户与程序或系统之间交互行为的各种活动。 如鼠标的各种动作、键盘的操作以及发生在组件上的各种动 作,因此事件一般也分为三种类型:键盘事件、鼠标事件以及 组件的动作事件(对鼠标或键盘事件在一定程度上进行了封 装)。 Java定义了许多不同种类的class类型,用来描述用户不同 种类动作的事件类,例如,描述按钮、文本域和菜单等组件动 作的ActionEvent类,还有描述窗口事件的WindowEvent类等, 并按照面向对象程序设计的思想方法进行抽象归纳成一个类层 次结构系统。 每发生一个事件,程序都需要作出相应的响应,这称为事件 处理。在JDK1.0和1.1以后的版本中,事件表示以及事件的处 理是采用2种不同的方式来完成的。
• 边框式布局方式通常不单独使用,而是与流程式布局的面 板配合使用.
4、外观的管理与控制 ——GridLayout
GridLayout布局方式可以使容器中的各组件呈网格状分布。 容器中各组件的高度和宽度相同,当容器的尺寸发生变化 时,各组件的相对位置不变,但各自的尺寸会发生变化。 各组件的排列方式:从左到右,从上到下。 与BorderLayout类相类似,如果想在一个网格单元中添加 多个组件,则必须先在该网格单元放一个Panel容器,再将多 个组件放在该Panel容器中。 适用于象电子表格、日历和计算器等场合的布局.
4、外观的管理与控制 ——GridBagLayout
当一个容器的布局方式为GridBagLayout时,在往其中添加一个 组件前,必须先用GridBagConstraints设置该组件的空间限制。 //在一个容器中 GridBagLayout g = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); setLayout( g ); Button b = new Button(“Test”); //生成组件b c.fill = … //设置c的各种属性值 …… g.setConstraints( b, c ); / *根据c的各种属性值对组件b进 行空间限制 */ add( b );
• 第1步:在主窗口或者一个面板组件的构造方法体内,创 建每个子组件,包括它们的外观和属性; • 第2步:在创建了内容窗格之后,把内容窗格的布局管理 器设置成流程式,即通过内容窗格调用Container类提供 的setLayout(),把内容窗格的布局设置为流程式布局管 理器; • 第3步:调用Container类提供的add()方法把一个个子组 件添加到父容器中; • 对 Swing 按 钮 组 件 调 用 其 父 类 AbstractButton 提 供 的 addActionListener()方法,把动作监听器注册到按钮组 件(事件源)中 。 – 在事件驱动控制中使用匿名内部类
Hale Waihona Puke GridLayout类有三种构造方法:
public GridLayout()
在一行中放置所有的组件,各组件间的水平间距为0象素。
public GridLayout(int rows, int cols)
生成一个rows行,cols列的管理器。实际计算时只取行数。 rows或cols可以有一个为0。若rows为0,这表示每行放置cols 个组件,网格式布局管理器会自动根据具体组件数,计算出行 数;若cols为0,这表示共有rows行,网格式布局管理器会根据 具体组件数,每行可以放置任意多个组件。 组件间的水平和竖直间距为0象素。
public GridLayout(int rows, int cols, int horizontalGap, int verticalGap )
各组件间的水平和竖直间距为指定值。
例子:例6.9,P373:GridLayoutDemo.java
4、外观的管理与控制 ——CardLayout
CardLayout布局方式可以帮助用户处理两个或更多的组件共 享同一显示空间。共享空间的组件之间的关系就像一摞牌一 样,它们摞在一起,只有最上面的组件是可见的。 CardLayout 可以象换牌一样处理这些共享空间的组件:为每张牌定义一个 名字,可按名字选牌;可以按顺序向前或向后翻牌;也可以直 接选第一张或最后一张牌。 public void show(Container parent, String name) public void next(Container parent) public void previous(Container parent) public void first(Container parent) public void last(Container parent) 其中,Container是拥有该CardLayout布局管理器的容器。
容器
布局管理器
4、外观的管理与控制
在程序中安排组件的位置和大小时,应注意: 容器中布局管理器负责各组件的大小和位置,用户无法在 这种情况下设置组件的这些属性,如试图调用setLocation(), setSize(), setBounds()等。 如果用户确实需要自己设置组件的大小和位置,则应取消 该容器的布局管理器,方法为: setLayout(null) 但用户必须使用setLocation(), setSize(), setBounds()等方法 为组件设置绝对的大小和位置,因而,这样的程序将与系统 相关。(这种组件的布局方式称为“绝对布局方式” )
Java技术基础
彭刚 penggang@
第六章
图形用户界面 与事件处理
内容提要:
1、图形用户界面概况 2、使用AWT(Abstract Window Toolkit)组件 3、使用Swing组件 4、外观的管理与控制 5、事件与事件处理 6、各种组件介绍
§6.4
边框布局方式的特点
• 与流程式布局方式不同,边框式布局具有如下特点:
– (1)并不对每个子组件进行完全、准确的定位控制,只是决定该子 组件应放在哪个区域,且每个区域只能放一个组件,即使编程者 在一个区域放入多个组件,则新放入的组件将替代原来的组件。 – (2)放在北、南、东和西等4个区域的子组件沿着父容器边框摆 放,处于中央区域的子组件比其他区域的尺寸要大, – (3)若某个区域没有摆放子组件或被隐藏起来,如图6.31所示其他 区域的子组件将覆盖该区域。
4、外观的管理与控制 ——GridBagLayout GridBagLayout是获取GridBagConstraints实例中 的值为某个组件设置了空间限制,当往容器中添加 了该组件后,该GridBagConstraints实例还可继续用 于其他组件,当然其中值需要做相应的调整。
GridBagWindow.java
4、外观的管理与控制
java.awt类包中包含五种布局管理器:
FlowLayout:Panel和Applet的缺省布局管理器 BorderLayout:Window、Dialog和Frame的缺省布局管理器 GridLayout CardLayout GridBagLayout
流程式布局管理器编程要点
5、事件与事件处理 ——JDK1.0的事件处理
在JDK 1.0中,是采用一种叫做事件传递的机制来处理发生 在用户界面上的事件。这是一种“分层结构的事件模型” ( Hierarchical event model ) 。 在 AWT 组 件 中 , 都 从 Component中继承了与事件处理有关的方法: action(Event e, Object arg):处理动作事件 handleEvent(Event e):处理低级键盘事件和鼠标事件 每个组件都可以用上述方法处理发生在自己上面的事件, 同时,也可以不作处理,而是交给包含它的容器去处理,并 且可以一层一层往上传递,直到最顶层容器。不论哪种方 法,都需要继承已有的AWT组件,生成其子类,在子类中重 写上述方法来对事件进行处理。