Java Swing 中的 GridBagLayout 中的布局太复杂,参数很多,不太理解其中的意思,总是布局不出想要的效果。前几天在网上搜到了 tablelayout 布局管理器,发现很简单,很强大。
下面,我来介绍一下 tablelayout 的用法。
首先, tablelayout 不是 JDK 中自带的,需要导入第三方的 jar 包(本文已经给出,见附件)。源码和例子已经在这个 jar 包中了。
使用 tablelayout 现要 import 两个类:
import layout.TableLayout; import layout.TableLayoutConstraints;
TableLayout ,顾名思义,就是表格布局管理器。见下图:
表格的行和列都是从 0 开始计算。上图中,左上角的单元格坐标为( 0,0 ),右下角的单元格坐标为( 3,4 )。一个单元格的坐标为(列号,行号)。
1. TableLayout 的行列的分配
一般来说,创建 tablelayout 要先设定行和列。我们定义一个 double 类型的二维数组 size[][] 。
double size[][] = {{100, 0.50, 0.20, TableLayout.FILL, 200, TableLayout.FILL}, {TableLayout.FILL}};
在上面的代码中, size[0] 中存放的是列的宽度, size[1] 中存放的是行的高度;数组中的整数表示该单元格的宽度或高度为多少像素,小数表示该单元格的宽度或高度为剩余空间的百分之多少, TableLayout.FILL 表示将剩余的空间填满,如果出现多个 TableLayout.FILL ,则这几个单元格平分剩余的空间。假设这个容器有 500 像素宽,则在上面的例子中,第 0 列的宽度为 100 像素,第 1 列宽度为 100 ,第 2 列为( 500-100-200 ) *0.5=40 ,第 3 列为( 500-100-200 ) *0.3/2=30 ,第 4 列为 200 ,第 5 列同第 3 列,为 30 。
2. 创建一个 tablelayout
创建 tablelayout 就和其他布局管理器一样了,直接 new 一个 TableLayout 。
如下:
new TableLayout(size);
3. 为容器添加组件
使用 add 方法, add( 组件,“坐标” ) ,例如给 frame 添加 button :
frame.add(button,”0,0”);
如果这个 button 横跨多个单元格,计算顺序是从左上到右下,则字符串的前两个放第一格的坐标,后两个行最后一格的坐标,例如,从( 0,0 )到( 3,4 ),表示为:
frame.add(button,”0,0,3,4”);
好了, tablelayout 就介绍完了,很简单吧。