ATW容器的继承关系如下图
ATW提供了FlowLayout、BorderLayout、GridLayout、GridBagLayout、CardLayout 5个常用的布局管理器,Swing还提供了一个BoxLayout布局管理器。下面将详细介绍这几个布局管理器。
在FlowLayout布局管理器中、组件像流水一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列。在默认情况下,FlowLayout布局管理器从左向右排列所有组件,遇到边界就会折回。
FlowLayout有3个构造器:
1. FlowLayout():使用默认的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
2. FlowLayout(int align):使用指定的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
3. FlowLayout(int align, int hgap, int vgap):使用指定的对齐方式及指定的垂直间距、水平间距创建FlowLayout布局管理器。
上面3个构造器的hgap、vgap代表水平间距、垂直间距,为这两个参数传入整数值即可。其中align表明FlowLayout中组件的排列方向(从左向右、从右向左、从中间向两边、容器方向的开始边对齐、),该参数使用FlowLayout类的静态常量:FlowLayout.LEFT、FlowLayout.Right、FlowLayout.CENTER、FlowLayout.LEADING、FlowLayout.TRAILING
/**
* 下面程序将一个Frame改为使用FlowLayout布局管理器
*/
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
public class FlowLayoutTest {
public static void main(String[] args) {
Frame f = new Frame("测试窗口");
// 设置Frame容器使用FlowLayout布局管理器
f.setLayout(new FlowLayout(FlowLayout.LEFT, 20, 5));
// 向窗口中添加十个按钮
for (int i = 0; i < 10; i++) {
f.add(new Button("按钮" + 1));
}
// 设置窗口为最佳大小
f.pack();
f.setVisible(true);
}
}
pack()方法是Window容器提供的一个方法,该方法用于将窗口调整到最佳大小。
运行程序,如下图显示:
上图显示了各组件水平间距为20、垂直间距为5的分布效果。