上一篇中对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()调用的次数,...
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
宁夏光伏园区:科学布局,集约发展——以规划引领助推国家新能源综合示范区建设.pdf
342-大城市中心城区公路客运枢纽客流特征分析与布局优化对策探讨——以广州市为例.pdf
WPF 编程学习——布局 WPF 编程学习——布局是指在 Windows Presentation Foundation(WPF)中,如何设计和实现用户界面的布局。布局是应用程序界面设计的重要组成部分,它可以方便用户使用,并将信息清晰合理地...
以未来的名义,布局电动汽车产业——中国国际电动汽车会议及上海国际未来驾驶技术展览暨会议成功举办.pdf
微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+源码).zip 微信小程序——瀑布流布局(截图+...
【标题】:“第五个范例——布局之AccordionContainer” 在这个示例中,我们将探讨一个名为AccordionContainer的布局组件。AccordionContainer是一种特殊的布局管理器,它允许用户在一个区域内展开或折叠多个面板,...
在本实例中,"jquery基础实例002——可编辑的表格"主要展示了如何使用jQuery库来实现一个基本的交互式、可编辑的表格功能。jQuery是一个强大的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等...
微信小程序——FlexLayout布局(截图+源码).zip 微信小程序——FlexLayout布局(截图+源码).zip 微信小程序——FlexLayout布局(截图+源码).zip 微信小程序——FlexLayout布局(截图+源码).zip 微信小程序——...
【标题】"安卓Android源码——文件管理器源码.zip"是针对Android系统的一个开源项目,专注于文件管理器的应用程序开发。源码分析对于深入理解Android操作系统如何处理文件操作和目录管理至关重要,这对于Android...
《管理——电商企业的管理与发展——以京东商城为例》是一份深度探讨电商企业管理与发展的文档,通过对京东商城这一知名电商平台的案例分析,揭示了电商企业在快速发展的互联网时代如何进行有效管理和战略规划。...
微信小程序——侧滑布局(截图+源码).zip 微信小程序——侧滑布局(截图+源码).zip 微信小程序——侧滑布局(截图+源码).zip 微信小程序——侧滑布局(截图+源码).zip 微信小程序——侧滑布局(截图+源码).zip ...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
标题中的“第六个范例——布局之ContentPane”指的是一个编程示例,可能是一个教程或案例研究,关注于软件用户界面(UI)设计中的容器管理器——ContentPane。在Java Swing或JavaFX等图形用户界面(GUI)框架中,...
这个压缩包"安卓Android源码——软件管理器.zip"包含的是一个名为"AppExplorer.apk"的应用程序,可能是用于探索和管理Android设备上应用的自定义实现,以及一份关于软件管理器开发的日志文档"软件管理器的开发_日志....