Java BorderLayout(边框布局)布局管理器

BorderLayout

BorderLayout 将容器分为 EAST 、 SOUTH 、 WEST 、 NORTH 、 CENTER五个区域,普通组件可以被放置在这 5 个区域的任意一个中 。 BorderLayout布局 管理器的布局示意图如图所示 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OCLKh1ve-1611989830263)(./images/BorderLayout.png)]

当改变使用 BorderLayout 的容器大小时, NORTH 、 SOUTH 和 CENTER区域水平调整,而 EAST 、 WEST 和 CENTER 区域垂直调整。使用BorderLayout 有如下两个注意点:

  1. 当向使用 BorderLayout 布局管理器的容器中添加组件时 , 需要指定要添加到哪个区域中 。 如果没有指定添加到哪个区域中,则默认添加到中间区域中;
  2. 如果向同一个区域中添加多个组件时 , 后放入的组件会覆盖先放入的组件;
构造方法 方法功能
BorderLayout() 使用默认的水平间距、垂直 间距创建 BorderLayout 布局管理器 。
BorderLayout(int hgap,int vgap): 使用指定的水平间距、垂直间距创建 BorderLayout 布局管理器。

代码演示1:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66I7UAia-1611989830265)(./images/BorderLayout.jpg)]

import java.awt.*;

public class BorderLayoutDemo1 {
    
    

    public static void main(String[] args) {
    
    
        //1.创建Frame对象
        Frame frame = new Frame("这里测试BorderLayout");
        //2.指定Frame对象的布局管理器为BorderLayout
        frame.setLayout(new BorderLayout(30,5));
        //3.往Frame指定东南西北中各添加一个按钮组件
        frame.add(new Button("东侧按钮"), BorderLayout.EAST);
        frame.add(new Button("西侧按钮"), BorderLayout.WEST);
        frame.add(new Button("南侧按钮"), BorderLayout.SOUTH);
        frame.add(new Button("北侧按钮"), BorderLayout.NORTH);
        frame.add(new Button("中间按钮"), BorderLayout.CENTER);
        //4.设置Frame为最佳大小
        frame.pack();
        //5.设置Frame可见
        frame.setVisible(true);
    }
}

如果不往某个区域中放入组件,那么该区域不会空白出来,而是会被其他区域占用
在这里插入图片描述

package domee.GUI;

import java.awt.*;

public class BorderLayoutDemo2 {
    
    
    public static void main(String[] args) {
    
    
        Frame frame = new Frame("BorderLayout布局测试");
        //给frame设置BorderLayout管理器
        frame.setLayout(new BorderLayout(30,30));
        //向frame的指定区域添加组件
        frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
        frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
        //frame.add(new Button("西侧按钮"),BorderLayout.WEST);
        //frame.add(new Button("东侧按钮"),BorderLayout.EAST);

         frame.add(new Button("中间按钮"),BorderLayout.CENTER);
         frame.add(new TextField("测试文本框"));
        /**
         * 向同一个区域内添加多个组件时,只会显示最后一个,其他的多个组件被覆盖
         * 当四周区域内组件无内容时会被其他区域(中间)内容覆盖
         */
//        Panel panel = new Panel();
//        panel.add(new Button("中间按钮"),BorderLayout.CENTER);
//        panel.add(new TextField("测试文本框"));
//        frame.add(panel);
        frame.setBounds(200,200,600,300);
        //frame.pack();
        frame.setVisible(true);
    }
}

向同一个区域内添加多个组件时,只会显示最后一个,其他的多个组件被覆盖当四周区域内组件无内容时会被其他区域(中间)内容覆盖

代码演示2:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uar4oVxi-1611989830268)(./images/BorderLayoutDemo2.jpg)]

import java.awt.*;

public class BorderLayoutDemo2 {
    
    

    public static void main(String[] args) {
    
    
        //1.创建Frame对象
        Frame frame = new Frame("这里测试BorderLayout");
        //2.指定Frame对象的布局管理器为BorderLayout
        frame.setLayout(new BorderLayout(30,5));
        //3.往Frame指定南,北,放入一个按钮,往中间区域放入一个Panel

        frame.add(new Button("南侧按钮"), BorderLayout.SOUTH);
        frame.add(new Button("北侧按钮"), BorderLayout.NORTH);

        Panel panel = new Panel();
        panel.add(new TextField("测试文本"));
        panel.add(new Button("中间按钮"));

        frame.add(panel, BorderLayout.CENTER);
	
        //4.设置Frame为最佳大小
        frame.pack();
        //5.设置Frame可见
        frame.setVisible(true);
    }
}

猜你喜欢

转载自blog.csdn.net/ruan_luqingnian/article/details/113432845