上一篇中对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
》
分享到:
相关推荐
本篇文章将详细介绍如何使用RecyclerView,特别是其核心部分——布局管理器。 首先,RecyclerView的核心概念是视图复用,这使得在大量数据滚动时性能更优。它通过ViewHolder模式减少了findViewById()调用的次数,...
此外,还可以学习如何使用Android Studio的布局编辑器来直观地设计和预览布局。 总之,理解和熟练运用这些布局管理器是成为Android开发者的必备技能。通过“动手学Android之五——布局初步(二)”的例子程序,...
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 ...
信息通信技术产业布局的影响因素——基于中国30个省市区的实证研究.pdf
342-大城市中心城区公路客运枢纽客流特征分析与布局优化对策探讨——以广州市为例.pdf
WPF 编程学习——布局 WPF 编程学习——布局是指在 Windows Presentation Foundation(WPF)中,如何设计和实现用户界面的布局。布局是应用程序界面设计的重要组成部分,它可以方便用户使用,并将信息清晰合理地...
以未来的名义,布局电动汽车产业——中国国际电动汽车会议及上海国际未来驾驶技术展览暨会议成功举办.pdf
微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+...
【标题】:“第五个范例——布局之AccordionContainer” 在这个示例中,我们将探讨一个名为AccordionContainer的布局组件。AccordionContainer是一种特殊的布局管理器,它允许用户在一个区域内展开或折叠多个面板,...
在本实例中,"jquery基础实例002——可编辑的表格"主要展示了如何使用jQuery库来实现一个基本的交互式、可编辑的表格功能。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等...
【标题】"安卓Android源码——文件管理器源码.zip"是针对Android系统的一个开源项目,专注于文件管理器的应用程序开发。源码分析对于深入理解Android操作系统如何处理文件操作和目录管理至关重要,这对于Android...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
标题中的“第六个范例——布局之ContentPane”指的是一个编程示例,可能是一个教程或案例研究,关注于软件用户界面(UI)设计中的容器管理器——ContentPane。在Java Swing或JavaFX等图形用户界面(GUI)框架中,...
UI布局——————————√ 窗口开启和关闭动画(2D和3D)—–√ 用户注册和修改———————√ 在我身上——————————–√ 国际奥委会———————————-√ 数据加密(MD5、DES)—————-√ ...
本示例,"第七个范例——布局之LayoutContainer",将深入探讨一种用于组织和管理UI元素的机制,即LayoutContainer。LayoutContainer是许多编程框架中的一个概念,它允许开发者以灵活和有序的方式排列组件,确保界面...
动态交叉布局通常涉及到自定义ViewGroup或者使用现有的布局管理器如GridLayout、FlexboxLayout等进行扩展。在Android中,我们通常使用XML布局文件来定义界面元素,但有时为了实现更复杂的效果,我们需要编写Java或...
2. **流体布局**:利用百分比单位来定义元素宽度,使其能根据浏览器窗口大小变化而自适应,实现响应式设计。 3. **Flexbox布局**:弹性盒模型,适用于一维布局,如行或列。它允许父元素自动调整子元素的大小和排列...