布局管理器

布局管理器学习笔记

1.4 LayoutManager布局管理器

LayoutManeger布局管理器可以根据运行平台来调整组件大小,程序员不用再手动设置组件的大小和位置,只需要为容器选择合适的布局管理器即可。

1.4.1 FlowLayout(JPanel的默认布局管理器)

组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,从头开始排列。默认情况下,FlowLayout布局管理器从左到右排列所有组件,遇到边界就会折回下一行重新开始。

构造方法方法功能
FlowLayout()使用默认的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
FlowLayout(int align)使用指定的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。
FlowLayout(int align,int hgap,int vgap)使用指定的对齐方式及默认的垂直间距、水平间距创建FlowLayout布局管理器。

align:使用FlowLayout类的静态常量:FlowLayout.LEFT、FlowLayout.CENTER、FlowLayout.RIGHT,默认左对齐。

hgap(水平间距),vgap(垂直间距):通过整数设置,单位是像素,默认是5个像素。

代码演示:

import java.awt.*;

public class FlowLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("测试FlowLayout");
        //1.通过setLayout方法设置容器的布局管理器
        frame.setLayout(new FlowLayout(FlowLayout.LEFT,20,20));//可以修改参数观察不同效果
        
        //2.添加多个按钮到frame
        for (int i = 1; i <= 100; i++) {//快捷100.fori
            frame.add(new Button("按钮"+i));
        }
        
        //3.设置最佳大小,通过pack方法
        frame.pack();

        frame.setVisible(true);
    }
}

1.4.2 BorderLayout(边框布局管理器)

JFrame的默认布局管理器,当改变使用BorderLayout的容器大小时,各组件相对位置不变,南北组件高度不变,东西组件宽度不变,的那中间部分组建的尺寸发生变化。

构造方法方法功能
BorderLayout()各组件间的水平和竖直间距为缺省值0个像素
BorderLayout(int horizontalGap,int verticalGap)各组件间的水平和竖直间距为指定值

1.如果不往某个区域放组件,则该区域不会空出来,而是被其他区域占用

代码示例1:

import java.awt.*;

public class BorderLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("测试");

        //1.给frame设置BorderLayout布局管理器
        frame.setLayout(new BorderLayout());
        //2.往frame的指定区域添加组件
        frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
        frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);
        frame.add(new Button("中间按钮"),BorderLayout.CENTER);

        frame.add(new TextField("测试文本框"));

        frame.pack();//设置最佳大小
        frame.setVisible(true);
    }
}

运行结果:

在这里插入图片描述

2.如果想在某一区域放入两个组件,则将组件添加进Panel中,否则先加入的组件会被后加入的组件覆盖。

代码示例2:

import java.awt.*;

public class BorderLayoutDemo2 {
    public static void main(String[] args) {
        Frame frame = new Frame("测试");

        //1.给frame设置BorderLayout布局管理器
        frame.setLayout(new BorderLayout());
        //2.往frame的指定区域添加组件
        frame.add(new Button("北侧按钮"),BorderLayout.NORTH);
        frame.add(new Button("南侧按钮"),BorderLayout.SOUTH);

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

        frame.add(panel);
        
        frame.pack();//设置最佳大小
        frame.setVisible(true);
    }
}

1.4.3 GridLayout(网格布局管理器)

根据构造方法定义的行数和列数,使容器中的各组件呈网格状分布。容器中的各组件高度和宽度相同,当容器尺寸发生变化时,各组件相对位置不变,但各自尺寸会发生变化。

容器中各组件默认排列方式为:从左到右、从上到下

如果想在一个网格中添加多个组件,则必须先将该网格单元放入一个JPanel容器中,再将多个组件放在该JPanel容器中。

构造方法方法功能
GridLayout()在一行放置所有的组件,各组件水平间距0像素
GridLayout(int rows,int cols)规定行数和列数,组件间水平间距和垂直间距为0像素。可以有一个参数为0,若某参数为0,则表示可以有任意行(rows为0)/列(cols为0),若两者都不为0,则行数是主要参数,列数是具体组件数动态确定。
GridLayout(int rows,int cols,int hgap,int vagp)指定水平和竖直间距

代码示例:

package com.jyh.awt.layout;

import java.awt.*;

public class GridLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("计算器");

        //1.创建一个Panel对象,里面存放一个TextField组件
        Panel panel = new Panel();
        panel.add(new TextField(30));
        //2.把这个Panel添加到frame的北边区域
        frame.add(panel,BorderLayout.NORTH);
        //3.创建一个Panel对象,并且设置他的布局管理器为GridLayout
        Panel panel1 = new Panel();
        panel1.setLayout(new GridLayout(3,5,4,4));
        //4.往Panel中添加内容
        for (int i = 0; i < 10; i++) {
            panel1.add(new Button(i+""));//Button里要设置为字符类型,因此i+""将其转换为字符类型
        }
        panel1.add(new Button("+"));
        panel1.add(new Button("-"));
        panel1.add(new Button("*"));
        panel1.add(new Button("/"));
        panel1.add(new Button("."));
        //5.把当前Panel添加到frame中
        frame.add(panel1);
        frame.pack();
        frame.setVisible(true);

    }
}

运行结果:
在这里插入图片描述

1.4.4 GridBagLayout(网格包布局管理器)

与GridLayout布局管理器不同的是,在GridBagLayout布局管理器中,一个组件可以跨越一个或多个网络,并可以设置各网格的大小互不相同,从而增加布局的灵活性。

但是一般不使用,因为Swing中有更加强大的布局管理器,这里不详细介绍。

1.4.5 CardLayout(卡片布局管理器)

CardLayout布局管理器以时间而非空间来管理他的组件,它将加入容器的所有组件看成一叠卡片,每次只有最上面的那个Component才可见,就像一副扑克牌,他们叠在一起,每次只有最上面的才可见。

方法方法功能
CardLayout()
CardLayout(int hgap,int vagp)
first(Container target)显示target容器中的第一张卡片
last(Container target)显示target容器中的最后一张卡片
previous(Container target)显示target容器中的前一张卡片
next(Container target)显示target容器中的后一张卡片
show(Container target,String name)显示target容器中的指定名字的卡片

1.4.6 BoxLayout布局管理器

在java.swing中,提供了一个新的容器Box,该容器的默认管理器就是BoxLayout。

示例:

教材232页Example9_5.java

还有一些设置间距的方法,这里不详细介绍。

1.4.7 null布局管理器

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值