Java Swing FlowLayout布局管理器的用法(附带实例)
流布局(FlowLayout)管理器是 Swing 中最基本的布局管理器。
使用流布局管理器摆放组件时,组件被从左到右摆放。当组件占据了当前行的所有空间时,溢出的组件会被移动到当前行的下一行。默认情况下,行组件的排列方式被指定为居中对齐,但是通过设置可以更改每一行组件的排列方式。
FlowLayout 类具有以下常用的构造方法:
构造方法中的 alignment 参数表示使用流布局管理器时每一行组件的排列方式,该参数可以被赋予 FlowLayout.LEFT、FlowLayout.CENTER 或 FlowLayout.RIGHT,这 3 个值的详细说明如下表所示。
在 public FlowLayout(int alignment, int horizGap, int vertGap) 构造方法中,还存在 horizGap 与 vertGap 两个参数,这两个参数分别以像素为单位指定组件与组件之间的水平间隔与垂直间隔。
【实例 1】使用流布局排列按钮。创建 FlowLayoutPosition 类,并继承 JFrame 类。设置当前窗体的布局管理器为流布局管理器,运行程序后调整窗体大小,查看流布局管理器对组件的影响。

图 1 使用流布局管理器摆放按钮和改变窗体大小后的效果
使用流布局管理器摆放组件时,组件被从左到右摆放。当组件占据了当前行的所有空间时,溢出的组件会被移动到当前行的下一行。默认情况下,行组件的排列方式被指定为居中对齐,但是通过设置可以更改每一行组件的排列方式。
FlowLayout 类具有以下常用的构造方法:
public FlowLayout() public FlowLayout(int alignment) public FlowLayout(int alignment, int horizGap, int vertGap)
构造方法中的 alignment 参数表示使用流布局管理器时每一行组件的排列方式,该参数可以被赋予 FlowLayout.LEFT、FlowLayout.CENTER 或 FlowLayout.RIGHT,这 3 个值的详细说明如下表所示。
alignment 参数值 | 说明 |
---|---|
FlowLayout.LEFT | 每一行组件的排列方式被指定为左对齐 |
FlowLayout.CENTER | 每一行组件的排列方式被指定为居中对齐 |
FlowLayout.RIGHT | 每一行组件的排列方式被指定为右对齐 |
在 public FlowLayout(int alignment, int horizGap, int vertGap) 构造方法中,还存在 horizGap 与 vertGap 两个参数,这两个参数分别以像素为单位指定组件与组件之间的水平间隔与垂直间隔。
【实例 1】使用流布局排列按钮。创建 FlowLayoutPosition 类,并继承 JFrame 类。设置当前窗体的布局管理器为流布局管理器,运行程序后调整窗体大小,查看流布局管理器对组件的影响。
import java.awt.*; import javax.swing.*; public class FlowLayoutPosition extends JFrame { public FlowLayoutPosition() { setTitle("本窗体使用流布局管理器"); // 设置窗体标题 Container c = getContentPane(); // 窗体使用流布局,组件右对齐,组件之间的水平间隔为 10 像素,垂直间隔为 10 像素 setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10)); for (int i = 0; i < 10; i++) { c.add(new JButton("button" + i)); // 在容器中循环添加 10 个按钮 } setSize(300, 200); // 设置窗体大小 setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // 关闭窗体则停止程序 setVisible(true); // 设置窗体可见 } public static void main(String[] args) { new FlowLayoutPosition(); } }运行结果如下图所示,使用鼠标改变窗体大小,组件的摆放位置也会相应地发生变化。

图 1 使用流布局管理器摆放按钮和改变窗体大小后的效果