BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为 5 个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。组件可以被放置在这 5 个区域中的任意一个。BorderLayout 布局的效果如下所示。

    image.png

    从上图可以看出 BorderLayout 边界布局管理器将容器划为了 5 个区域,其中,箭头是指改变容器大小是各个区域需要该改变的方向。也就是说,在改变容器时,NORTH 和 SOURTH 区域高度不变,长度调整;WEST 和 EAST 区域宽度不变,高度调整;CENTER 会相应进行调整。

    当向 BorderLayout 布局管理器的容器中添加组件时,需要使用 add(Component comp, Object constraints)方法。其中,参数 comp 表示要添加的组件,constraints 指定将组件添加到布局中的方式和位置的对象,它是一个 Object 类型,在传参时可以使用 BorderLayout 类提供的 5 个常量,它们分别是 EAST、SOUTH、WEST、NORTH 和 CENTER。

    接下来通过一个案例来演示一下 BorderLayout 布局管理器对组件布局的效果,如下所示。

    1. import java.awt.BorderLayout;
    2. import java.awt.Button;
    3. import java.awt.Frame;
    4. public class example03 {
    5. public static void main(String[] args) {
    6. final Frame frame = new Frame("BorderLayout");
    7. frame.setLayout(new BorderLayout());
    8. frame.setSize(300, 300); //设置窗体大小
    9. frame.setLocation(300, 200); //设置窗体显示的位置
    10. frame.setVisible(true); //设置窗体可见
    11. //下面的代码是创建 5 个按钮,分别用于填充 BorderLayout 的 5 个区域
    12. Button button1 = new Button("东部"); //创建新按钮
    13. Button button2 = new Button("西部");
    14. Button button3 = new Button("南部");
    15. Button button4 = new Button("北部");
    16. Button button5 = new Button("中部");
    17. //下面的代码是将创建好的按钮添加到窗体中,并设置按钮所在的区域
    18. frame.add(button1, BorderLayout.EAST); //设置按钮所在的区域
    19. frame.add(button2, BorderLayout.WEST);
    20. frame.add(button3, BorderLayout.SOUTH);
    21. frame.add(button4, BorderLayout.NORTH);
    22. frame.add(button5, BorderLayout.CENTER);
    23. }
    24. }

    运行程序,生成的窗口如下所示。
    QQ截图20200617103532.png
    上述代码块中,为 Frame 容器设置了 BorderLayout 布局管理器(也可以不用设置,Frame 默认使用 BorderLayout 布局管理器),在容器的东、南、西、北、中 5 个区域放置了 5 个按钮。

    BorderLayout 的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。但需要注意的是,向 BorderLayout 的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加到 CENTER 区域,并且每个区域只能放置一个组件,如果向一个区域中添加多个组件时,后放入的组件会覆盖先放入的组件