Java 图形设计 -- 布局策略

一、背景

在界面设计中,一个容器要放置许多组件,为了美观,为组件安排在容器中的位置,这就是布局设计。
java.awt 中定义了多种布局类,每种布局类对应一种布局策略。

常用布局类有五种:

  • 流布局管理器 FlowLayout: 依次放置组件。
  • 边界布局管理器 BorderLayout: 将组件放置在边界上。
  • 箱式布局管理器 BoxLayout: 管理一组水平或垂直排列的组件。
  • 卡片布局管理器 CardLayout: 将组件像扑克牌一样叠放,而每次只能显示其中一个组件。
  • 网格布局管理器 GridLayout: 将显示区域按行、列划分成一个个相等的格子,组件依次放入这些格子中。
  • 网格组布局管理器 GridBagLayout: 将显示区域划分成许多矩形小单元,每个组件可占用一个或多个小单元。

布局管理器是实现 LayoutManager 接口的类。

二、绝对布局

绝对布局是指硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。
例:

Container.setLayout(null) // 取消布局管理器。
Component.setBounds() // 设置每个组件的大小与位置

三、流布局管理器(FlowLayout)

FlowLayout 布局是将其中的组件按照加入的先后顺序从左到右排列,一行满之后就转到一下行继续从左到右排列,每一行中的组件都居中排列。
这种布局策略,一般用于组件不多的情况,当组件较多时,容器中的组件就会显得高低不平,各行长短不一。

常用构造方法:

public FlowLayout() // 默认布局
public FlowLayout(int alignment) // 参数设定对齐方式
// alignment 为 0 时,每一行的组件将被指定按照左对齐排列;
// alignment 为 2 时,每一行的组件将被指定按照右对齐排列;
// alignment 为 1 时,每一行的组件将被指定按照居中对齐排列;
public FlowLayout(int alignment, int horizGap, int vertGap) 
// 参数分别表示 对齐方式、水平间距、垂直间距(以像素为单位)

四、边界布局管理器(BorderLayout)

BorderLayout 布局策略是把容器内的空间简单划分为东“East”, 西 “West”, 南 “South”, 北 “North”, 中 “Center” 五个区域。加入组件时,都应该指明把组件放在哪一个区域中,一个位置放一个组件。
如果某个位置要加入多个组件,应先将要加入该位置的组件放放另一个容器中,然后再将这个容器加入到这个个位置。

常用构造方法:

BorderLayout() // 默认布局: 默认情况下,没有间隙。
BorderLayout(int horz, int vert) // 设定组件之间的水平间距和垂直间距。

五、箱式布局管理器(BoxLayout)

如果是用来管理一组水平排列的组件,则称为水平箱;如果是用来管理一组垂直排列的组件,则称为垂直箱。

六、卡片布局管理器(CardLayout)

采用CardLayout布局的容器虽可容纳多个组件,但是多个组件拥有同一个显示空间,某一时刻只能显示一个组件。
每个直接添加到其所管理容器中的容器或组件为一个卡片,最先被添加到其所管理容器中的容器或组件被认为是第一个卡片,最后被添加的则为最后一个卡片,初次运行时将显示第一个卡片。就像一叠扑克牌每次只能显示最上面的一张一样,这个显示的组件将占据容器的全部空间。

七、网格布局管理器(GridLayout)

网格布局管理器将容器划分为网格,所以组件可以按行和列进行排列。在网格布局管理器中,每一个组件的大小都相同,并且网格中的空格的个数由网格的行数和列数决定。
组件从网格的左上角开始,按照从左到右、从上到下的顺序加入到网格中,而且每一个组件都会填满整个网格,改变窗体的大小,组件也会随之而改变大小。

Public GridLayout(int rows, int columns) // 参数表示行数和列数
// 只能一个参数可以为 0,代表一行或一列可以排列多个组件。
Public GridLayout(int rows, int columns, int horizGap, int vertGap)
// 参数表示 行数、列数、网格间距

GridLayout 布局以行为基准,当放置的组件个数超额时,自动增加列;反之,组件太少也会自动减少列,行数不变,组件按行优先顺序排列(根据组件自动增减列)。
GridLayout 布局的每个网格必须填入组件,如果希望某个网格为空白,可以用一个空白标签(add(new Label())) 顶替。

八、网格组布局管理器 GridBagLayout

由 GridBagLayout 类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形网格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。
所谓动态的矩形网格,就是可以根据实际需要随意增减矩形网格的行数和列数。
通过 GridBagLayout 类实现的矩形网格的绘制方向由容器决定:
如果容器的方向是从左到右,则位于矩形网格左上角的单元格的列索引为 0,此时组件左上角的点为起始点;
如果容器的方向是从右到左,则位于矩形网格右上角的单元格的列索引为 1,此时组件右上角的点为起始点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件设计师考试真题 附带2010年的考试大纲 考试科目1:计算机与软件工程知识  1.计算机科学基础   1.1 数制及其转换      • 二进制、十进制和十六进制等常用制数制及其相互转换   1.2 数据的表示      • 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)      • 非数值表示(字符和汉字表示、声音表示、图像表示)      • 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)   1.3 算术运算和逻辑运算      • 逻辑代数的基本运算和逻辑表达式的化简   1.4 数学基础知识      • 命题逻辑、谓词逻辑、形式逻辑的基础知识      • 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)      • 排列组合、概率论应用、应用统计(数据的统计分析)      • 运算基本方法(预测与决策、线性规划、网络图、模拟)   1.5 常用数据结构      • 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作      • Hash(存储地址计算,冲突处理)   1.6 常用算法      • 排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法      • 算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性  2.计算机系统知识   2.1 硬件知识    2.1.1 计算机系统的组成、体系结构分类及特性      • CPU和存储器的组成、性能和基本工作原理      • 常用I/O设备、通信设备的性能,以及基本工作原理      • I/O接口的功能、类型和特性      • I/O控制方式(中断系统、DMA、I/O处理机方式)      • CISC/RISC,流水线操作,多处理机,并行处理   2.1.2 存储系统      • 主存-Cache存储系统的工作原理      • 虚拟存储器基本工作原理,多级存储体系的性能价格      • RAID类型和特性   2.1.3 安全性、可靠性与系统性能评测基础知识      • 诊断与容错      • 系统可靠性分析评价      • 计算机系统性能评测方式   2.2 软件知识    2.2.1 操作系统知识      • 操作系统的内核(中断控制)、进程、线程概念      • 处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)      • 存储管理(主存保护、动态连接分配、分段、分页、虚存)      • 设备管理(I/O控制、假脱机)      • 文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)      • 作业管理(作业调度、作业控制语言(JCL)、多道程序设计)      • 汉字处理,多媒体处理,人机界面      • 网络操作系统和嵌入式操作系统基础知识      • 操作系统的配置    2.2.2 程序设计语言和语言处理程序的知识      • 汇编、编译、解释系统的基础知识和基本工作原理      • 程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用      • 各类程序设计语言主要特点和适用情况   2.3 计算机网络知识      • 网络体系结构(网络拓扑、OSI/RM、基本的网络协议)      • 传输介质、传输技术、传输方法、传输控制      • 常用网络设备和各类通信设备      • Client/Server结构、Browser/Server结构      • LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接      • 因特网基础知识以及应用      • 网络软件      • 网络管理      • 网络性能分析   2.4 数据库知识      • 数据库管理系统的功能和特征      • 数据库模型(概念模式、外模式、内模式)      • 数据模型,ER图,第一范式、第二范式、第三范式      • 数据操作(集合运算和关系运算)      • 数据库语言(SQL)      • 数据库的控制功能(并发控制、恢复、安全性、完整性)      • 数据仓库和分布式数据库基础知识   2.5 多媒体知识      • 多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式      • 简单图形的绘制,图像文件的处理方法      • 音频和视频信息的应用      • 多媒体应用开发过程   2.6 系统性能知识      • 性能指标(响应时间、吞吐量、周转时间)和性能设计     

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值