Swing布局管理器--BorderLayout(边框布局管理器)

24 篇文章 0 订阅

概要

  • 在向容器中添加组件时,需要考虑组件的大小和位置。如果不使用布局管理器,则需要先在纸上画好各个组件的位置并计算组件间的距离,再向容器中添加,这样虽然可以控制组件的位置,实现起来却十分麻烦。
  • 为此java提供了6种布局管理器,可以将组件进行统一管理,没有布局管理器都实现LayoutManager接口

边框布局管理器

  • BorderLayout(边框布局管理器)是 Window、JFrame 和 JDialog 的默认布局管理器
  • 边框布局管理器将窗口分为 5 个区域:North、South、East、West 和 Center边框布局管理器将窗口分为 5 个区域:North、South、East、West 和 Center
  • North 表示北,将占据面板的上方;South 表示南,将占据面板的下方;East表示东,将占据面板的右侧;West 表示西,将占据面板的左侧;中间区域 Center 是在东、南、西、北都填满后剩下的区域

边框布局管理器
在这里插入图片描述
注意
边框布局管理器并不要求所有区域都必须有组件,如果四周的区域(North、South、East 和 West 区域)没有组件,则由 Center 区域去补充。如果单个区域中添加的不只一个组件,那么后来添加的组件将覆盖原来的组件,所以,区域中只显示最后添加的一个组件
BorderLayout构造方法

  • BorderLayout():创建一个Border布局,组件之间没有间隙
  • BorderLayout(int hgap,int vgap):创建一个Border布局,其中hgap表示组件之间的横向间隔,vgap表示组件之间的纵向间隔,单位是像素

BorderLayout类成员变量

  • 容器调用Container类的add()方法添加组件时可以设置此组件在边界布局管理器中的区域,区域的控制可以由BorderLayout类的成员变量来控制
  • BorderLayout.NORTH:在容器中添加组件时,组件置于顶端
  • BorderLayout.SOUTH:在容器中添加组件时,组件置于底端
  • BorderLayout.EAST:在容器中添加组件时,组件置于右端
  • BorderLayout.WEST:在容器中添加组件时,组件置于左端
  • BorderLayout.CENTER:在容器中添加组件时,组件置于中间开始填充,直到与其它组件边界连接

Container方法

public Component add(String name, Component comp) {
        addImpl(comp, name, -1);
        return comp;
    }
  • 通过add方法添加组件,设置布局

Demo01

import javax.swing.*;
import java.awt.*;

public class Demo09 {
    public static void main(String[] args) {
        //创建JFrame类对象
        JFrame jFrame = new JFrame("边框父窗体");
        //获取一个容器
        Container container = jFrame.getContentPane();
        //设置窗体大小
        BorderLayout borderLayout = new BorderLayout();
        //设置JFRame窗体的布局格式
        jFrame.setLayout(borderLayout);
        JButton button1 = new JButton("NORTH");
        JButton button2 = new JButton("SOUTH");
        JButton button3 = new JButton("CENTER");
        JButton button4 = new JButton("WEST");
        JButton button5 = new JButton("EAST");
        container.add(BorderLayout.NORTH,button1);
        container.add(BorderLayout.SOUTH,button2);
        container.add(BorderLayout.CENTER,button3);
        container.add(BorderLayout.WEST,button4);
        container.add(BorderLayout.EAST,button5);
//        jFrame.add(button1,BorderLayout.SOUTH);
        jFrame.setSize(400,400);
        //设置窗体可见
        jFrame.setVisible(true);
        //设置窗体关闭方式
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //创建边框布局管理器类对象

    }
}

Demo01运行效果如下

在这里插入图片描述
Demo02

import javax.swing.*;
import java.awt.*;

public class Demo09 {
    public static void main(String[] args) {
        //创建JFrame类对象
        JFrame jFrame = new JFrame("边框父窗体");
        //获取一个容器
        Container container = jFrame.getContentPane();
        //设置窗体大小
        BorderLayout borderLayout = new BorderLayout();
        //设置JFRame窗体的布局格式
        jFrame.setLayout(borderLayout);
        JButton button1 = new JButton("NORTH");
        //JButton button2 = new JButton("SOUTH");
        JButton button3 = new JButton("CENTER");
        JButton button4 = new JButton("WEST");
        JButton button5 = new JButton("EAST");
        container.add(BorderLayout.NORTH,button1);
        container.add(BorderLayout.SOUTH,button2);
        container.add(BorderLayout.CENTER,button3);
        container.add(BorderLayout.WEST,button4);
//        container.add(BorderLayout.EAST,button5);
//        jFrame.add(button1,BorderLayout.SOUTH);
        jFrame.setSize(400,400);
        //设置窗体可见
        jFrame.setVisible(true);
        //设置窗体关闭方式
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //创建边框布局管理器类对象
    }
}

Demo02运行效果如下
在这里插入图片描述
Demo03

  • 如果未指定布局管理器的SOUTH区域,则WEST、CENTER、EAST三个区域会填充SOUTH区域
  • 以此类推,若WEST区域未指定布局,则NORTH、CENTER、SOUTH三个区域会填WEST区域
import javax.swing.*;
import java.awt.*;

public class Demo09 {
    public static void main(String[] args) {
        //创建JFrame类对象
        JFrame jFrame = new JFrame("边框父窗体");
        //获取一个容器
        Container container = jFrame.getContentPane();
        //设置窗体大小
        BorderLayout borderLayout = new BorderLayout();
        //设置JFRame窗体的布局格式
        jFrame.setLayout(borderLayout);
        JButton button1 = new JButton("NORTH");
        JButton button2 = new JButton("SOUTH");
        JButton button3 = new JButton("CENTER");
        JButton button4 = new JButton("WEST");
        JButton button5 = new JButton("EAST");
        container.add(BorderLayout.NORTH,button1);
        container.add(BorderLayout.SOUTH,button2);
        container.add(BorderLayout.CENTER,button3);
        container.add(BorderLayout.WEST,button4);
//        container.add(BorderLayout.EAST,button5);
//        jFrame.add(button1,BorderLayout.SOUTH);
        jFrame.setSize(400,400);
        //设置窗体可见
        jFrame.setVisible(true);
        //设置窗体关闭方式
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //创建边框布局管理器类对象
    }
}

Demo03运行效果如下
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值