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就介绍完了,很简单吧。