JAVA布局管理
JAVA基础:FlowLayout布局管理器

在前⾯的例⼦中,使⽤到了FlowLayout布局管理器。
FlowLayout型布局管理器对容器中组件进⾏布局的⽅式是将组件逐个地安放在容器中的⼀⾏上。
⼀⾏放满后就另起⼀个新⾏。
FlowLayout有三种构造⽅法: public FlowLayout() public FlowLayout(int align) public F10wLayout(int align,int hgap,int vgap) 在默认情况下,FlowLayout将组件居中放置在容器的某⼀⾏上,如果不想采⽤这种居中对齐的⽅式,考试,⼤提⽰FlowLayout的构造⽅法中提供了⼀个对齐⽅式的可选项align。
使⽤该选项,可以将组件的对齐⽅式设定为左对齐或者右对齐。
align的可取值有FlowLayout.LEFT,FlowLayout.RIGHT和FlowLayout.CENTER三种形式,它们分别将组件对齐⽅式设定为左对齐、右对齐和居中,例如: new FlowLayout(FlowLayout.LEFT)这条语句创建了⼀个使⽤左对齐⽅式的FlowLayout的实例。
此外,FlowLayout的构造⽅法中还有⼀对可选项hgap和vgap,使⽤这对可选项可以设定组件的⽔平间距和垂直间距。
与其他布局管理器不同的是,FlowLayout布局管理器并不强⾏设定组件的⼤⼩,⽽是允许组件拥有它们⾃⼰所希望的尺⼨。
注意:每个组件都有⼀个getPreferredSize()⽅法,容器的布局管理器会调⽤这⼀⽅法取得每个组件希望的⼤⼩。
下⾯是⼏个使⽤setLayout()⽅法实现FlowLayout的例⼦: setLayout(new FlowLayout(FlowLayout.RIGHT,20,40)); setLayout(new FlowLayout(FlowLayout.LEFT)); setLayout(new FlowLayout());。
java中OverlayLayout(重叠)布局管理器专题

参考文现:孙卫琴《java面向对象程序设计》其他不详本文作者:黄邦勇帅学习本文前提条件:应学习过AWT图形编程。
本文的说明:本文是对学习Swing时,出现的一个新布局管理器OverlayLayout的专题介绍。
本文对理解该布局管理器的关键概恋,进行了详细讲解,希望读过本文后,大家能熟练运用这个布局管理器。
本文的的内容全是个人理解,因此难免有理解上的错误,望读者指出更正。
声明:禁止抄袭本文,若需要转载本文请注明转载的网址,或者注明转载自“黄邦勇帅”。
OverlayLayout(重叠)布局管理器与组件对齐方式,对齐点对齐点:该概念对于理解OverlayLayout布局至关重要,若不能理解对齐点那么你将对OverlayLayout和组件的对齐方式是一片雾水,为了说明对齐点我们将结合下图来讲解。
从以上两图可以看出来,对于OverlayLayout布局组件在容器中的放置位置是于对齐点有关的,在对齐点的位置(后面后介绍怎样计算)确定后就可以根据组件在X轴和Y轴的对齐方式来确定组件放置的位置。
由第一副图可以知道组件的X轴的值0表示组件的左侧面,1表示组件的右侧面,那么相应的0.25就表示离组件左侧面距离为组件宽度的0.25倍(1/4)处的地方,其他数字可以类推。
同样Y轴的0值表示组件的顶面,1表示组件的底面,0.25就表示组件离顶面距离为1/4处的地方,其他数字类推。
由第二副图可以知道,当组件在容器中的对齐点(对齐点的计算后面会专门讨论)确定后就可以根据设置的组件的X轴与Y轴的值来设置组件的位置,当把组件的X轴设为0时,表示组件以左侧面与X轴的对齐点对齐,如图中的按钮1。
当组件的X轴设为0.5时,则以组件整个宽度的中间部位与X轴的对齐点对齐,同样当X轴为0.75时,表示把组件离左侧面距离为0.75倍(即3/4)组件宽度的地方与X轴的对齐点对齐。
同样,对于Y轴当Y轴的值为0值,就以组件的顶面与Y轴对齐点对齐,当Y轴的值为1时,就以组件的底面与Y轴的对齐点对齐。
《JAVA语言程序设计》考核大纲

容器和组件
标签、文本框、密码框和按钮的应用
列表框、组合框、单选钮和复选钮的使用
菜单、工具栏及其他组伯的使用
14%
5
JAVA布局管理
Java中的布局管理方法
FlowLayout
BorderLayout
GridLayout
CardLayout
BoxLayout
GirdBagLayout
共10次
30%
综合考核
主要考核学生对该门课程的综合应用能力
笔试
共1次
40%
2、考核标准
序号
教学单元
考核的知识点及要求
考核比例
1
JAVA语言概述
JAVA语言的类型
JAVA程序类型
编辑JAVA程序
编译JAVA程序
运行JAVA程序
5%
2
JAVA程序设计基础
标识符的命名原则
变量类型(数值型、字符型、布尔型)
10%
6
JAVA事件监听
Java的事件监听机制
常用事件监听接口和适配器
事件监听类的编写
组件注册到事件监听类
10%
7
JAVA异常处理
Java异常处理机制
常见异常
异常处理方法
6%
8
JAVA多线程程序的设计
线程概述
线程与进程的区别
线程的状态
线程的建立方式
10%
9
JAVA文件处理和I/O流
利用File类进行文件处理
常量(整数、浮点数、布尔量、字符串、字符量)
运算符与表达式
JAVA语言的控制语句
JAVA的名字空间和包
5%
3
java程序设计使用教程(第2版)答案

第一章习题答案一、简答题1.Java语言有哪些特点?主要用于能够哪些方面的软件开发?特点:(1)面向对象,(2)平台无关性,(3)分布式,(4)可靠性和安全性,(5)多线程,(6)简单性,(7)健壮性,(8)高性能,(9)灵活性。
适用范围:(1)所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。
(2)计算过程的可视化、可操作化的软件的开发。
(3)动态画面的设计,包括图形图象的调用。
(4)交互操作的设计。
(5)Internet 的系统管理功能模块的设计,包括 Web 页面的动态设计、管理和交互操作设计等。
(6)Intranet上的软件开发(直接面向企业内部用户的软件)。
(7)与各类数据库连接查询的 SQL 语句实现。
(8)网络通信与移动通信,网络集成方面。
2.Java程序分为哪两类?各有什么特点?如何区分它们?Java语言程序分为两类:应用程序Application和小程序Applet,它们是利用Java语言生成的可运行代码中最常用的两种,两者都必须在Java虚拟机上运行。
Application更象我们平常用VB,VC等编写的桌面程序,多以控制台(CONSOLE)方式运行,当然也很容易实现窗口应用。
Applet则需要嵌入Web页面中,在支持Java虚拟机的浏览器上运行。
区分办法:应用程序Application中一定包括一个主方法main,而小程序Applet没有这个方法。
3.简述Java程序的运行过程。
一个Java源的运行需要经过三个步骤:(1)编辑源程序,产生.Java的源程序文件(2)运用Java虚拟机JVM将源文件编译为.class的字节码文件(3)根据程序的不同类型运行程序。
对于应用程序直接调用运行命令执行字节码文件,而对于小程序Applet,需要先将字节码文件嵌入HTML文件,然后用浏览器软件打开HTML文件。
4.什么是Java虚拟机?简述其工作机制。
Java虚拟机(Java Virtual Machine—JVM)是一种利用软件方法实现硬件功能的抽象化的计算机,它基于下层的操作系统和硬件平台,可以在上面执行Java的字节码程序。
浅谈Java布局管理器及其应用

Ca ao tFo au 等 。 图 1中 每 一 个 容 器 都 有 r y u、lwLo t L Ly u 属性 ,可 以在 对象 监 视 器 中 定义 布局 管 理 器 ao t
类型 , 如图 2 所示 。 2 Y ao t . X Ly u 布局管理器 1 这个布局管理器与其他开发工具 的窗体设计器
1112或 支 持 它 们 的 G 开 发 T. 如 : ule、 .、. UI 具 j i r b d
VsaAg r aa等等 。 i l ef v u oI 现在 就 以 fule 开 发 T具 bi r d 详 细说 明 AWT 中提 供 的 多种 布局 管 理 器 ,如 XY—
La o 、 r e La out fd y y ut Bo d r y G i La out rd g y G i Ba La out
工具 , 解决硬性设置组件而造成布局混乱的问题 , 这 就是布局管理器 (ao t ngr Ly u Maae 。 ) 在整 个 A T中 , 基 本 的关 系 就是 构 件 、 W 最 容器
维普资讯
一
一
一
Ja a 布局管理 v
新疆 天择数码科 技有 限公
摘
要
本 文 阐述 了Jv aa中的 布局 管 理 器在 开发 跨 平 台语 言的 重要 性 , 细 介 绍 了布局 管 理 详
器 的类 型 、 点及 其使 用方 法 , 特 列举 了 Jv 布 局 管理 器应 用 实例 。 aa
维普资讯
组 件 名称 , 回值 Байду номын сангаас C mp nn。 返 o o et
下 面我们 举 个 例子 看 如 何使 用 B r eLy u 布 od r ao t
JAVA简答题

1.请说说JAVA语言的主要特点?Java的特点是1简单易学,抛弃了许多C++容易混淆的概念;2Java面向对象的编程语言,符合人的思维模式,容易解决复杂的问题;3编写的软件能在执行码上兼容,在所有计算机上运行,与平台无关;4java内置对多线程的支持,允许同时完成多个任务;5浏览器内置的java运行环境能保护用户浏览包括java applet的网页;6java可以在分部环境中动态的维护程序及类库。
2.java的基本数据类型及他们所对应的关键字?Java语言有8种基本数据类型,分别是boolean,byte,short,char,int,long,float,double,这8种基本数据类型习惯上可以分成四大类。
逻辑类型boolean。
整数类型byte,short,int,long.。
字符类型char。
浮点类型float,double。
3.说说什么是异常,说出三种可能导致异常的情况?所谓异常就是程序运行时可能出现的一些错误。
几种可能导致异常的情况:1.试图打开一个根本不存在的文件;2.程序中有除法运算,但除数赋值为零时;3Bank类中income方法,对象调用该方法时,必须向参数in传递正整数,向参数out传递负数,并且int+out大于等于零,否则抛出异常。
4.简述try-catch-finally语句的执行过程?若try部分抛出异常现象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try将立即结束执行,转向执行相应的catch部分。
带有finally的语句,在执行try-catch语句后,执行finally语句,也就是说,无论在try部分是否发生异常,finally 子语句都会被执行。
但是,若try-catch语句中执行了程序退出代码,则不执行finally 子语句。
5.简述异常处理机制?Java的异常可以出现在方法调用过程中,即在方法调用过程中抛出异常对象,导致程序出现异常,并等待处理。
JAVA SWING 4中布局方式

创建一个新的流布局管理器,它具有指定的对齐方式以及指定的水 平和垂直间隙。
方法摘要
void
addLayoutComponent(String name, Component comp) addLayoutComponent 将指定的组件添加到布局中。 getAlignment() getAlignment 获取此布局的对齐方式。 getAlignOnBaseline() getAlignOnBaseline 如果组件将沿其基线垂直对齐,则返回 true。 getHgap() getHgap 获取组件之间以及组件与 Container 的边之间的水平间 隙。
构造方法摘要
BorderLayout() BorderLayout 构造一个组件之间没有间距的新边框布局。 BorderLayout(int hgap, int vgap) BorderLayout 构造一个具有指定组件间距的边框布局。
方法摘要
void
addLayoutComponent(Component comp, Object constraints) addLayoutComponent 使用指定的约束对象将指定组件添加到布局中。 addLayoutComponent(String name, Component comp) addLayoutComponent 已过时。 已过时。 由 addLayoutComponent(Component, Object)
float
float
Component getLayoutComponent getLayoutComponent(Container target, Object constraints)
Component getLayoutComponent getLayoutComponent(Object constraints)
JavaGUI布局管理器

JavaGUI布局管理器容器可设置布局管理器,管理容器中组件的布局:container.setLayout(new XxxLayout());Java有6种布局管理器,AWT提供了5种:FlowLayoutBorderLayoutGridLayoutGridBagLayoutCradLayoutSwing还提供了⼀种:BoxLayout1、FlowLayout 流式布局顾名思义,组件像⽔流⼀样,从第⼀⾏开始,从左向右依次排列,碰到边界时转到下⼀⾏继续。
三个构造函数:FlowLayout() //使⽤默认参数FlowLayout(int align) //设置对齐⽅式FlowLayout(int align,int hgap,int vgap) //设置对齐⽅式、⽔平间距、垂直间距align是FlowLayout类的常量,⽐如:FlowLayout.LEFT,FlowLayout.CENTER2、BorderLayout 边界布局将容器划分为EAST、WEST、SOUTH、NORTH、CENTER五个部分,每个部分可放置⼀个组件。
2个构造函数:BorderLayout() //使⽤默认参数BorderLayout(int hgap,int vgap) //设置⽔平间距、垂直间距放置组件时需指定位置:container.add(Component comp, Borderlayout.SOUTH); //第⼆个参数是BorderLayout类的常量,指定组件位置container.add(Component comp); //缺省位置时,默认为BorderLayout.CENTER,放在中间⼀共5个位置,⼀个位置最多放1个组件。
当然,可以在⼀个位置放置多个组件,只是后放置的组件会覆盖之前放置的组件。
也可以⼀个都不放。
3、GridLayout ⽹格布局将容器划分为指定⾏数、列数的⽹格,每个格⼦的尺⼨都相同,⼀个格⼦中放置⼀个组件,适合组件⼤⼩差不多的,⽐如放置计算器的按钮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JA V A布局管理一、FlowLayout(流布局管理):其组件的放置规律是从上到下,从左到右依次进行放置。
构造方法有下列几种:1.F lowLayout():创建每行组件居中对齐、组件间距为5个像素单位。
2.F lowLayout(int align):创建指定每行的对齐方式、组件间距为5个像素单位。
align取值表示组件的对齐方式:CENTER(居中对齐),LEFT(左对齐),RIGHT(右对齐)。
二、BorderLayout(边框布局管理):将容器分为上、下、左、右、中五个区域,分别对应North(北区),South(南区),West(西区),East(东区)和Center(中区)。
用add(component,index)方法向容器中添加组件,其中第二个参数指明组件位置,其取为:BorderLayout.North,BorderLayout.South,BorderLayout.East,BorderLayout.West,BorderLayout.Center。
其构造方法有中下几种:1.B orderLayout():创建组件间无间距的布局对象。
2.B orderLayout(int hgap,int vgap):创建指定组件间距的布局对象。
三、GridLayout(网格布局管理器):将容器分成尺寸相同的网格,组件被放在网格的空白处,顺序与流式布局一样。
网格中组件大小相同。
其构造方法有下列几种:1.GridLayout()以每行一列的方式构建一个GridLayout对象。
2.GridLayout(int row,int columns):根据指定行数和列数构造一个GridLayout对象,组件间距为0。
3.GridLayout(int row,int columns,int hgap,int,vgap): 根据指定行数和列数构造一个GridLayout对象,组件间距按指定值设置。
四、CardLayout( 卡片布局管理器):它将组件放在一系列卡片上,一次只能看到一张卡片,一张卡片只能放一个组件。
使用构造方法CardLayout()可以构建CardLayout对象。
组件按添加顺序存放在卡片序列中,使用下列方法将组件添加到容器中:add(Component,component,String name);name是卡片中组件的标识。
为了使组件在使用CardLayout容器中可见,可使用CardLayout对象的下列方法:1)first(Container container):显示第一张卡片。
2) last(Container container):显示最后一张卡片。
3)nextContainer container):显示下一张卡片。
4)show(Container container,String name):显示容器中指定名称的卡片。
五、GridBagLayout(网格块布局管理器):与GridLayout相似,不同的是GridBagLayout的组件大小可以不同,可以按任意顺序添加。
使用较少。
举例:1、用户登录界面的创建:import javax.swing.*;import java.awt.*;publib class login{public static void main(String agrs[]){JFrame f=new JFrame();f.setSize(220,120);s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel l_username=new JLabel(“用户名”);JLabel l_password=new JLabel(“密码”);JTextField t_username=new JTextField();JPasswordField t_password=new JPasswordField();JButton b1=new JButton(“登录”);JButton b2=new JButton(“注册”);JButton b3=new JButton(“取消”);JPanel p1=new JPanel();p1.setLayout(new GridLayout(2,2)); p1.add(l_username);p1.add(l_password);p1.add(t_username);p1.add(t_password);JPanel p2=new JPanel();p2.setLayout(new FlowLayout()); p2.add(b1);p2.add(b2);p2.add(b3);f.setLayout(new BorderLayout());f.add(p1,Border.CENTER);f.add(p2,Border.SOUTH);f.setVisible(true);}}JAVA事件处理所谓事件处理,是指Java应用能够对某些事件作出响应。
发出事件的对象称为事件源,对事件感兴趣的对象,称为监听器。
事件处理就是事件源发出事件,监听器捕获事件并作出响应的过程。
事件可以来自Java应用程序范围之内,例如用户点击按钮,也可以来自应用程序范围之外,例如应用服务器关机等。
一个事件中,通常包含一些必要的信息,例如事件源和事件类型等。
在Java中,每种事件都是一个事件类,而具体的事件则是事件类的实例。
Java应用运行过程中,程序本身及其周边环境不断发生变化,可能的事件种类非常之多。
对所有事件都响应是不现实的,因此,事件处理允许Java应用有选择地响应某些事件。
这个选择感兴趣的事件的过程,称为注册。
因此,所谓注册,就是某对象向事件源提出申请,表明自己对某类事件感兴趣,希望该事件发生时得到通知。
提出申请的对象称为监听器。
监听器将接收到自己感兴趣的事件,其他不感兴趣的事件则接收不到。
监听器之所以要捕获某类事件,是因为这类事件与其有关系。
例如,“确定”按钮的action事件的监听器,必须在按钮被点击时执行某种操作,如验证用户身份、查询购物清单或者将信息写入数据库等。
监听器在事件发生时执行某种操作,称为对事件作出响应。
并非任何类都是监听器,Java对监听器的行为特征有一定的要求,这些要求的具体表现就是监听器接口。
监听器接口规定了监听器应该实现的功能,只有实现了监听器接口的类才是监听器。
一类事件可以由多个事件源产生,而注册在该事件类上的监听器也可以不止一个,因此,事件源、事件和监听器之间具有多对多的关系。
这种多对多的关系,构成了对象之间相互沟通的网络,使得对象既可以协同一致,又能保持各自的相对独立。
这正是事件驱动模式的精髓所在。
概括而言,Java事件驱动模式由以下几个部分组成:事件类:定义事件的特征;监听器接口:定义监听器应该实现的功能;监听器:实现监听器接口,监听事件的发生并作出响应;事件源:产生事件。
事件的定义、产生、监听和响应。
在Java中,事件是以类的形式表现的,这种类称为事件类。
所有的事件类必须继承Java事件基类,即java.util.EventObject。
EventObject定义了事件类的共有特征,其中,最重要的属性是Object类型的source,这个属性指明了事件的来源,即事件源。
EventObject类提供了getSource()方法来获取事件源,但并没有相应的setSource(Object source)方法设置事件源,事件源的设置,是在事件实例化时由构造方法EventObject(Object source)来实现的。
EventObject(Object source)是EventObject唯一的构造方法,这意味着所有事件必须在实例化时就指定事件源。
习惯上,事件类的名称由事件名称和字符串“Event”构成。
为了对事件作出响应,必须使用监听器。
在代码上,监听器也表现为一个Java类,但不是任意的Java类都可以成为监听器,只有实现了监听器接口的Java类,才是监听器。
监听器接口定义了一个类要成为监听器必须具备的功能。
每种事件类都有自己的监听器接口,不同事件类的监听器接口可以很不一样,但如同所有事件类必须继承事件基类java.util.EventObject一样,所有的监听器接口也都必须继承监听器接口基类java.util.EventListener。
EventListener本身没有定义任何方法,它只是一个标志接口,用来表明所有继承自EventListener 的接口属于监听器接口。
习惯上,监听器接口的名称中包含事件的名称。
为了对事件作出响应,必须使用监听器。
在代码上,监听器也表现为一个Java类,但不是任意的Java类都可以成为监听器,只有实现了监听器接口的Java类,才是监听器。
监听器接口定义了一个类要成为监听器必须具备的功能。
每种事件类都有自己的监听器接口,不同事件类的监听器接口可以很不一样,但如同所有事件类必须继承事件基类java.util.EventObject一样,所有的监听器接口也都必须继承监听器接口基类java.util.EventListener。
EventListener本身没有定义任何方法,它只是一个标志接口,用来表明所有继承自EventListener 的接口属于监听器接口。
习惯上,监听器接口的名称中包含事件的名称,如processEvent或者handleEvent之类。
通常事件处理方法应返回一个值,用来指示对事件的处理是否成功,可以是一个布尔值,也可以是其他类型的值。
当然,如果事件及其处理很简单,也可以不返回任何值。
∙定义事件及其监听器接口后,即可定义监听器。
监听器是监听器接口的实现者,提供监听器接口中定义的所有方法的实现代码。
简单情形下,一个监听器只监听一种类型的事件,即实现一种监听器接口。
复杂的监听器可以实现多种监听器接口,监听多种类型的事件。
监听器中,最重要的,当然是事件处理方法代码。
在事件处理方法代码中,监听器可以从入口参数中获得事件对象,并通过该对象获得所需的信息,例如事件源、事件发生时间等等。
事件源是一定可以从事件对象中获得的,因为事件基类EventObject提供了getSource()方法,除此以外,能从事件对象中获得的信息,取决于事件类的定义。
∙事件处理方法从事件对象中获取所需信息,其目的是为了对事件作出必要的响应。
如何响应一个事件,是与应用相关的。
取决于应用的需求,对事件作出的响应可以非常复杂,也可以十分简单。
需要注意的是,由于事件通常会中断应用主代码的执行,因此,即使是非常复杂的事件处理代码,也要尽可能优化,以便执行得更快一些,否则,应用将会出现类似“死机”的现象,表现为屏幕停止刷新、鼠标点击失去反应等等。