上一篇中对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
》
分享到:
相关推荐
python图形用户界面学习-布局管理(csdn)————程序
信息通信技术产业布局的影响因素——基于中国30个省市区的实证研究.pdf
342-大城市中心城区公路客运枢纽客流特征分析与布局优化对策探讨——以广州市为例.pdf
WPF 编程学习——布局 WPF 编程学习——布局是指在 Windows Presentation Foundation(WPF)中,如何设计和实现用户界面的布局。布局是应用程序界面设计的重要组成部分,它可以方便用户使用,并将信息清晰合理地...
以未来的名义,布局电动汽车产业——中国国际电动汽车会议及上海国际未来驾驶技术展览暨会议成功举办.pdf
【标题】:“第五个范例——布局之AccordionContainer” 在这个示例中,我们将探讨一个名为AccordionContainer的布局组件。AccordionContainer是一种特殊的布局管理器,它允许用户在一个区域内展开或折叠多个面板,...
这个源码示例“IOS应用源码——当点击编辑器的时候,编辑器自动调整高度.zip”显然关注的是一个常见的需求:当用户在编辑器(如UITextField或UITextView)中输入时,编辑器能够根据文本内容的多少动态地调整其高度,...
**pdg阅读器——打开pdg文件** PDG文件是一种由超星阅览器(SSReader)生成的电子图书格式,广泛应用于学术文献、图书、期刊等数字资源的存储。这种格式具有良好的版权保护机制,因此在学术界和图书馆领域较为常见...
文化产业规划文本是研究我国区域文化产业发展的重要...因此,建议优化区域文化发展布局,差异化发展,创新内容和形式,构建产业价值链,积极推动产业联动,加快文化产业发展,同时为"十三五"文化产业规划提供一定参考依据。
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
标题中的“第六个范例——布局之ContentPane”指的是一个编程示例,可能是一个教程或案例研究,关注于软件用户界面(UI)设计中的容器管理器——ContentPane。在Java Swing或JavaFX等图形用户界面(GUI)框架中,...
UI布局——————————√ 窗口开启和关闭动画(2D和3D)—–√ 用户注册和修改———————√ 在我身上——————————–√ 国际奥委会———————————-√ 数据加密(MD5、DES)—————-√ ...
本实验主要围绕Android界面设计的核心元素——布局管理器展开,旨在让学生深入理解并熟练掌握四种基本布局管理器:LinearLayout、RelativeLayout、FrameLayout以及GridLayout的使用。布局管理器在Android应用开发中...
动态交叉布局通常涉及到自定义ViewGroup或者使用现有的布局管理器如GridLayout、FlexboxLayout等进行扩展。在Android中,我们通常使用XML布局文件来定义界面元素,但有时为了实现更复杂的效果,我们需要编写Java或...
2. **流体布局**:利用百分比单位来定义元素宽度,使其能根据浏览器窗口大小变化而自适应,实现响应式设计。 3. **Flexbox布局**:弹性盒模型,适用于一维布局,如行或列。它允许父元素自动调整子元素的大小和排列...
"IOS应用源码——包含丰富功能的编辑器.rar" 提供了一个完整的编辑器应用源代码,旨在帮助开发者深入探究iOS应用的构建过程,特别是那些涉及到文本编辑、格式处理、用户交互等复杂功能的实现。 首先,我们要了解iOS...
在第五章“图形造型师——草图编辑”中,我们将深入探讨ProE Wildfire 5.0在二维草图绘制与编辑方面的核心技巧。 草图编辑是ProE Wildfire 5.0中至关重要的一环,它是构建三维模型的基础。在这个章节中,你将学习到...
本篇文章将深入探讨两种最常用的布局管理器——线性布局(LinearLayout)和相对布局(RelativeLayout),它们是Android开发者必须掌握的核心知识。 线性布局是Android中最基础的布局方式,如同它的名字所示,它会...