导包、设置
导入包:
<dependency>
<groupId>com.jgoodies</groupId>
<artifactId>forms</artifactId>
<version>1.2.1</version>
</dependency>
idea里面布局切换一下:
行列规范解释
他是一个类似表格布局方式,你先设计好一个大的表格背景,然后将你想要的组件放置到指定表格里即可。然后再通过代码设置每个表格内的样式,使用逗号分割。
主要两个大类:
- 列 column
- 行 row
行列里面在细分:
- 列 column
列_1, 列_2, 列_3 ... - 行 row
行_1, 行_2, 行_3 ...
如果你在 Xxx.form页面里设置的是一列二行,那么下面的columnSpecs , rowSpecs 就必须严格对应,否则报错。
String columnSpecs = "pref";
String rowSpecs = "4dlu, pref";
// 使用 FormLayout 布局
FormLayout layout = new FormLayout(
columnSpecs,
rowSpecs
);
标识含义说明:
"pref":表示列的宽度会适应其最佳首选大小,即根据内容自动调整大小。
"min(pref, value)":表示列的宽度会适应其最佳首选大小,但不会小于指定的值。如果内容较小,则列会扩展到指定的最小值。
"max(pref, value)":表示列的宽度会适应其最佳首选大小,但不会大于指定的值。如果内容较大,则列会收缩到指定的最大值。
"fill":表示列宽度会填充可用的空间,平均分配给所有的填充列。
"fill:pref":表示列宽度会填充可用的空间,并且额外的空间按照列的最佳首选大小进行分配。
"grow":表示列会根据容器的可用空间进行扩展,以填充所有可用的空间。
"grow(value)":表示列会根据容器的可用空间进行扩展,但不会超过指定的值。
dlu 表示dialog units , 比如3dlu, 7dlu...
对于列规范,每个字符表示一个列。常见的简写字符包括:
"p":表示首选大小(preferred size)的列。
"m":表示最小大小(minimum size)的列。
"f":表示填充(fill)列,会填充可用的空间。
"g":表示增长(grow)列,会根据可用空间进行扩展。
"d":表示对话框单位(dialog units)大小的列。
对于行规范,也是类似的情况,每个字符表示一个行,并具有相同的含义:
"p":表示首选大小(preferred size)的行。
"m":表示最小大小(minimum size)的行。
"f":表示填充(fill)行,会填充可用的空间。
"g":表示增长(grow)行,会根据可用空间进行扩展。
"d":表示对话框单位(dialog units)大小的行。
每个格又可以嵌套:
- 逗号内的每个参数都由三个部分组成:
对齐方式:固定尺寸:调整方式
; - 当然也可以不按照
x:x:x
来写。 如果你只写一个,系统就会使用默认值。
对齐方式:
-
列对齐有:left, center, right, fill(其中fill表示填充至整个区域)
行的默认对齐方式是center; -
行对齐有:top, center, bottom, fill;
列的默认对齐方式是fill,
固定尺寸:
- pref——表示"首选大小"(Preferred Size)指的是组件在没有约束条件的情况下所希望具有的大小;
- min 表示minimum size;
- dlu 表示dialog units;
- px —— Pixel;
- pt —— Points;
- in —— Inches ;
- mm —— Millimeter;
- cm —— Centimeter;
- ...
调整方式:
- 如:left:pref:grow
"grow" 表示列会根据容器的可用空间进行扩展(其内容将增长到列最大的宽度为止),以填充所有可用的空间。- grow可以简写成g
- "grow(value)":表示列会根据容器的可用空间进行扩展,但不会超过指定的值。
- grow还可以这样写 grow(0.5),括号内是一个double型数字,当没有后面括号时默认为grow(1.0)。
- 当然也有与grow相反的,如:none、nogrow、n。
组件加入表格布局:
builder.add(component1).xy(1, 1); // 将 component1 添加到第一行第一列
panel.add(new JScrollPane(textArea1), cc.xy(1, 2)); // 将 textArea1 添加到第二行第一列
Reference
swing的jgoodies FormLayout
https://www.cnblogs.com/daichangya/archive/2013/04/11/12959890.html