FlowLayout(流式布局)
介绍:
flowLayout是最简单的布局管理器,会按照添加的顺序从左往右放置,当达到边界的时候,自动从下一行开始。可以对这个组件进行按左对齐、居中对齐(默认方式)、右对齐
方法及常量
- public FlowLayout() 默认是剧居中对齐,水平和垂直之间的间距是5个单位
- public FlowLayout(int align) 指定组件相对于容器的对齐方式,水平、垂直之间的间距也是默认的5个单位
- public FlowLayout(int align, int hgap, int vgap) 指定对齐方式,和水平、垂直之间的间距
- pubic static final int CENTER 居中对齐
- pubic static final int LEADING 与容器的开始段对齐的方式一样
- pubic static final int LEFT 左对齐
- pubic static final int RIGHT 右对齐
代码演示:
import javax.swing.*;
import java.awt.*;
public class Main {
public static void creat() {
//下拉框组件
JFrame f = new JFrame("流式布局");
f.setSize(400, 400);
f.setLocation(300, 300);
f.setLayout(new FlowLayout(FlowLayout.RIGHT, 3, 3));//按照右边进行对齐
for(int i = 1; i <= 9; ++ i ) {
Button b = new Button("button" + i);
f.add(b);
}
f.setDefaultCloseOperation(3);
f.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Main::creat);
}
}
运行结果:
右对齐:
而且会随着边框的大小变化,位置发生变化
BorderLayout(边界布局管理器)
介绍:
BorderLayout边界布局器,是一个比较复杂的布局方式,将窗体划分成5个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。
代码演示:
import javax.swing.*;
import java.awt.*;
public class Main {
public static void creat() {
//下拉框组件
JFrame f = new JFrame("流式布局");
f.setSize(400, 400);
f.setLocation(300, 300);
f.setDefaultCloseOperation(3);
f.setVisible(true);
f.setLayout(new BorderLayout(5, 5));//横向 纵向的间距均为5像素
f.setFont(new Font("Helvetica", Font.PLAIN, 14));
//添加按钮
f.add("North", new JButton(BorderLayout.NORTH));
f.add("South", new JButton(BorderLayout.SOUTH));
f.add("East", new JButton(BorderLayout.EAST));
f.add("West", new JButton(BorderLayout.WEST));
f.add("Center", new JButton(BorderLayout.CENTER));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(Main::creat);
}
}
运行的结果:
BorderLayout的优点和注意事项:
可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置保持不变,如果不指定添加到哪个区域,会默认添加到中间(CENTER)的区域,并且只能放置一个组件,如果向一个区域添加多个组件,后放入的会覆盖掉先前的组件
GridLayout(网格布局管理器)
介绍:
GridLayout(网格布局管理器)是Java中常用的布局管理器之一,它将容器划分为行和列的网格,组件按照顺序从左到右、从上到下进行排列。
网格布局特点:
- 每个单元格大小相等,根据容器的大小平均分配
- 组件按照添加的顺序依次填充网格单元格
- 当容器大小改变时,网格布局会自动调整组件的大小和位置
创建网格布局对象:
// 创建一个3行2列的网格布局
GridLayout gridLayout = new GridLayout(3, 2);
将网格布局应用到容器:
// 创建一个面板,并设置为网格布局
JPanel panel = new JPanel();
panel.setLayout(gridLayout);
向网格布局中添加组件:
// 向面板中添加按钮
panel.add(new JButton("Button 1"));
panel.add(new JButton("Button 2"));
panel.add(new JButton("Button 3"));
// ...
灵活性:
- 可以根据需要动态地增加或删除组件
- 适合用于需要以表格形式排列组件的场景
结论:
总的来说,GridLayout是一种简单且常用的布局管理器,适合于需要将多个组件按照规律排列的情况,例如按钮面板、游戏棋盘等。