BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为 5 个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。组件可以被放置在这 5 个区域中的任意一个。BorderLayout 布局的效果如下所示。
从上图可以看出 BorderLayout 边界布局管理器将容器划为了 5 个区域,其中,箭头是指改变容器大小是各个区域需要该改变的方向。也就是说,在改变容器时,NORTH 和 SOURTH 区域高度不变,长度调整;WEST 和 EAST 区域宽度不变,高度调整;CENTER 会相应进行调整。
当向 BorderLayout 布局管理器的容器中添加组件时,需要使用 add(Component comp, Object constraints)方法。其中,参数 comp 表示要添加的组件,constraints 指定将组件添加到布局中的方式和位置的对象,它是一个 Object 类型,在传参时可以使用 BorderLayout 类提供的 5 个常量,它们分别是 EAST、SOUTH、WEST、NORTH 和 CENTER。
接下来通过一个案例来演示一下 BorderLayout 布局管理器对组件布局的效果,如下所示。
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
public class example03 {
public static void main(String[] args) {
final Frame frame = new Frame("BorderLayout");
frame.setLayout(new BorderLayout());
frame.setSize(300, 300); //设置窗体大小
frame.setLocation(300, 200); //设置窗体显示的位置
frame.setVisible(true); //设置窗体可见
//下面的代码是创建 5 个按钮,分别用于填充 BorderLayout 的 5 个区域
Button button1 = new Button("东部"); //创建新按钮
Button button2 = new Button("西部");
Button button3 = new Button("南部");
Button button4 = new Button("北部");
Button button5 = new Button("中部");
//下面的代码是将创建好的按钮添加到窗体中,并设置按钮所在的区域
frame.add(button1, BorderLayout.EAST); //设置按钮所在的区域
frame.add(button2, BorderLayout.WEST);
frame.add(button3, BorderLayout.SOUTH);
frame.add(button4, BorderLayout.NORTH);
frame.add(button5, BorderLayout.CENTER);
}
}
运行程序,生成的窗口如下所示。
上述代码块中,为 Frame 容器设置了 BorderLayout 布局管理器(也可以不用设置,Frame 默认使用 BorderLayout 布局管理器),在容器的东、南、西、北、中 5 个区域放置了 5 个按钮。
BorderLayout 的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。但需要注意的是,向 BorderLayout 的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到 CENTER 区域,并且每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件。