swing布局一定要用netbean 的原生布局插件 或eclipse 的window builder 插件
否则手写太麻烦 也容易错,建议使用window builder
window builder 设计出来的代码比较简单
注意: 如果eclipse 编辑器中缺少Design 设计界面
可以使用 右侧菜单中 open with-> windowbuilder editor 打开
用在固定宽度和高度的布局场景
通常用于菜单栏,按钮组,文档列表等场景
例如:制作计算器按键,或者奖品九宫格等
1) 修改rows和columns属性 可以限定行和列数
2) 修改rgap 和hgap可以修改行间距和列间距
因为不能自适应窗体大小尺寸,所以比较少用,
但是 可以用在窗体大小不能调整的情况
很好用 ,直接拖组件在上面即可
其实flow不适合不同尺寸的组件的布局
比较适合相同尺寸的组件布局
通常用在一个固定大小容器中
而且flow 可以换行布局( 这个特性比较特殊)
例如:
一篇文章的排版效果就比较适合用flow
或者bar条和菜单条的菜单或按钮组的并排排列效果
在整体界面布局时用不到,
因为不同区域的尺寸大小不一样,用流布局非常丑
默认是border 布局 分上下左右 中
上下左右区域的放置组件
如果设置首选尺寸 区域大小是可以固定的
中区的组件 尺寸可以跟随容器大小变化自动调整
需要水平排列或者垂直排列的场景
flow布局只能从头到尾或者从尾到头,
而box布局可以垂直排列,
可用的地方其实也是在某个单一的容器内部
不适合用于窗体的整体布局
水平排列 x-axis
垂直排列y-axis
既有 grid表格布局的特性, 又可以单独调整行高和列宽 类似于xls表格
同时还具有列头和行头的效果
类似于python中的grid布局
创建单元格样式
GridBagConstraints 单元格 = new GridBagConstraints();
.gridx = 0; 表格的列坐标
.gridy = 0; 表格的行坐标
.insets = new Insets(0, 0, 5, 0);设置单元格边距
.fill = GridBagConstraints.BOTH; 单元格填充效果
panel.add(btn组件, 单元格);填入组件到容器中
它的布局原理是 ,
.setHorizontalGroup( //设置水平组排列
.setVerticalGroup( //设置垂直组排列
.createParallelGroup( //创建平行组
.createSequentialGroup() //创建顺序组
.addGroup() 添加组
.addComponent 添加组件
.addGap(),添加固定间隙块
.addPreferredGap 添加首选且可调整间隙块
.addContainerGap 添加自适应间隙块