上一篇中对GridBagLayout的整理主要来自《Java核心技术第八版(卷I)》和《Java 高级编程(第二版)》以及网上一些信息的整理,还是显得内容比较冗长,复杂,内容太多。下面对上一篇做一个简单的归纳拓展。
GridBagLayout管理的容器中添加的每一个组件都关联一组约束值,这些约束值封装在GridBagConstraints类的实例中。
GridBagConstraints提供两个构造函数:无参构造函数和传递11个约束值的构造函数,尽管这两个构造函数都可使用,但后一个构造函数传递
的参数实在是太多了,
一般都是使用无参构造函数,然后修改自己设定的部分约束值,指的说明的是,
GridBagConstraints的这11个约束值并不是通过get/set方式来设定,而是直接通过 【对象.属性(如 constraints.fill)】来设定,
虽然容器添加的组件通常不止一个,且每个组件都有格子的约束值,但可以为所有组件使用同一个GridBagConstraints实例
。
GridBagConstraints的11个参数:
1)int gridx,gridy
指定单元格的起始行和列,默认为0。
2)int gridwidth,gridheight
指定跨越单元格的行和列的范围,默认为1。
3)double weightx,weighty
单元格在扩大时的增量域,默认为0.0
4)int fill
指定组件在单元格内的填充行为,默认为NONE
5)int anchor
表示组件在单元格内的对齐方式,默认为CENTER
6)int ipadx,ipady
指定组件周围的内部填充,默认为0。
7)Insets insets
指定组件边框周围的外部填充,默认为不填充。
因为GridBagConstraints类没有set方法来设置其属性,而且类名较长,这儿可以使用帮助类GBC来实现GridBagConstraints的约束值的设置:
1.名字简短:GBC extends GridBagConstraints
2.创建最床用的构造函数GBC(int gridx,int gridy)和GBC(int gridx,int gridy,int Gridwidth,int gridheight)
3.设置便捷的setter,setter方法返回this,使得可以继续链接它们
GBC setGridXY(int gridx,int gridy){…… return this;};
GBC setGridWH(int gridweight,int gridheight){…… return this;};
GBC setWeight(double weightx,double weighty){…… return this;};
GBC setAnchor(int anchor){…… return this;};
GBC setFill(int fill){…… return this;};
GBC setInsets(Insets insets){…… return this;};
GBC setIpad(int ipadx,ipady){…… return this;};
使用网格组布局的一些步骤:
1.在纸上画出组件布局草图
2.找出一种网格,小组件被放置在一个单元格内,大组件将横跨多个单元格
3.用0,1,2....标识网格的行和列,现在可以读取gridx,gridy,gridwidth和gridheight的值
4.对于每个组件,考虑如下问题:是否需要水平或者垂直填充它所在的单元格?如果不需要,那么那么希望如何排列?这些就是fill和anchor参数的设置
5.将所有组件的增量设置为100.如果需要某行或者某列始终保持默认的大小,将将这行的weightx和weighty设置为0
6.编写代码,仔细检查GridBagConstraints的设置,错误的约束可能会破坏整个布局
7.编译、运行
参考:
1.《
Pro Java Programming(Second Edition)
》
2.《
Core Java I
》
分享到:
相关推荐
BorderLayout——边界布局管理器:FlowLayout——流式布局管理器:GridLayout——网格布局:CardLayout——卡片式布局:...
python图形用户界面学习-布局管理(csdn)————程序
NULL 博文链接:https://alog2012.iteye.com/blog/1613294
1.1 布局管理器 1.1.1 基本布局管理器(QBoxLayout) 1.1.2 栅格布局管理器(QGridLayout) 1.1.3 窗体布局管理器(QFormLayout) 1.1.4 综合使用布局管理器 1.2 设置部件大小 1.2.1 大小提示和最小大小提示 1.2.2 ...
实现了一个MFC的盒子布局管理器类CBoxLayout
java GUI 中的五种布局管理器的经典例子,可以参考一下!!!
Android开发——布局管理 博文地址: https://blog.csdn.net/Zach_z/article/details/80587712
全面布局车联网生态——本刊专访四维图新总裁程鹏.pdf
布局管布局管理器及事件处理代码
《CSS网站布局实战》——实例源码包《CSS网站布局实战《CSS网站布局实战》——实例源码包》——实例源码包
基于互联网背景下的商业网点布局优化策略研究——以漳州市城市商业网点专项规划为例.pdf
可以帮助Java学习者深入了解边界布局管理器
中国电动汽车配套基础设施布局需求侧研究——基于Logit回归的消费偏好分析.pdf
信息通信技术产业布局的影响因素——基于中国30个省市区的实证研究.pdf
• 使用布局管理器,可以根据运行平台来调整控件的大小,程序员要做的,就是选择合适的布局管理器。 常见的几种类型的布局管理器: • 线性布局 • 框架布局 • 表格布局 • 相对布局 • 网格布局 需要补充的案例:...
新型城镇化背景下中小城市医疗卫生设施布局规划方法探究——以张家港市为例.pdf
宁夏光伏园区:科学布局,集约发展——以规划引领助推国家新能源综合示范区建设.pdf
自行设计程序,创建一个标题为“计算器”的框架。要求有菜单项,文本框、按钮等控件。采用BorderLayout或者GridLayout布局管理器。
武汉新芯:围绕物联网,布局近中远战略——关注CIS传感器、通用芯片和三维闪存.pdf
Y厂是一家外商投资的中小型企 业,主要供应商和客户均在国外。该 厂采用订单驱动的生产模式,产品品 .................仓库采用拣选货区和存储 区混合使用的方式。