Java日记(1 1)—— 布局管理器

介绍:

概念:组件在容器(比如JFrame)中的位置大小是由布局管理器来决定的(相当于CSS)。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理

种类:java中布局管理器有20多种(想知道的去查API),常见的有以下5种:

  • 流式布局管理器(FlowLayout)
  • 边界布局管理器(BorderLayout)
  • 网络布局管理器(GridLayout)
  • 卡片布局管理器(CardLayout)
  • 网格包布局管理器(GridBagLayout)

边界布局(BorderLayout)

边界布局将容器简单的分为东西南北中5个区域,中间区域最大

这里写图片描述

代码:

package Demo8_1;

import java.awt.*;
import javax.swing.*;
public class Demo8_2 extends JFrame{

    //定义组件
    JButton jb1,jb2,jb3,jb4,jb5;

    public static void main(String[] args) {
        Demo8_2 demo8_2 =  new Demo8_2();
    }

    public Demo8_2(){
        //创建组件
        jb1 = new JButton("中部");
        jb2 = new JButton("北部");
        jb3 = new JButton("东部");
        jb4 = new JButton("南部");
        jb5 = new JButton("西部");


        //添加各个组件
        this.add(jb1,BorderLayout.CENTER);
        this.add(jb2,BorderLayout.NORTH);
        this.add(jb3,BorderLayout.EAST);
        this.add(jb4, BorderLayout.SOUTH);
        this.add(jb5,BorderLayout.WEST);

        //设置窗体属性
        this.setTitle("边界布局案例");
        this.setSize(300, 200);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        //显示窗体
        this.setVisible(true);

    }
}

注意:

1.不是五个部分都必须添加
2.中部组件会自动的调节大小(如果中部缺省,默认会空出来)
3.JFrame窗体,JDialog对话框组件默认布局方法


流式布局(FlowLayout)

流式布局,按照组件的添加次序将 组件 从左到右放置在容器中,当到达容器的边界时,组件会放置在下一行。

 FlowLayout可以以<b>左对齐,居中对齐,右对齐</b>的方式排列组件

这里写图片描述

代码:

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

public class Demo8_3 extends JFrame{

    //定义组件
    JButton jb[]; 
    FlowLayout fl;
    public static void main(String[] args) {
        Demo8_3 demo8_3 = new Demo8_3(); 
    }
    //构造函数
    public Demo8_3(){

        //创建组件
        FlowLayout fl = new FlowLayout();
        JButton jb[] = new JButton[8];
        for(int i=0;i<8;i++)
            jb[i] = new JButton("按钮"+i);

        //添加组件
        for(int i=0;i<8;i++)
            this.add(jb[i]);


        //设置窗体的布局管理器
        this.setLayout(fl);
        //设置流式布局管理器的对其方式
        fl.setAlignment(FlowLayout.RIGHT);

        //设置窗体属性
        this.setTitle("流式布局案例");
        this.setSize(400,300);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);               //禁止用户改变窗体大小

        //显示窗体
        this.setVisible(true);
    }

}

注意:

1.改变布局管理器:setLayout(new 布局管理器(布局管理器的参数));
eg: this.setLayout(new FlowLayout(FlowLayout.LEFT))
(将布局管理器改为流式布局管理器,并且显示的方式是左对齐)

2.默认是居中对齐(FlowLayout.CENTER),可以通过 构造函数FlowLayout(int align)函数 或者 setAlignment(int align)函数 来制定对齐方式

  • 五个参数值及含义如下:
  • 0或FlowLayout.lEFT ,控件左对齐
  • 1或FlowLayout.CENTER ,居中对齐
  • 2或FlowLayout.RIGHT ,右对齐
  • 3或FlowLayout.LEADING,控件与容器方向开始边对应
  • 4或FlowLayout.TRAILING,控件与容器方向结束边对应
  • 如果是0、1、2、3、4之外的整数,则为左对齐

3.只要组件被添加到布局管理器中,那么组件的大小将交给布局管理器管理,自身的设置将失效

4.当容器被缩放时,组件的位置可能发生变化,但是大小不会变(可以通过容器的setResizable(false)方法来设置不允许用户改变大小)

网格布局(GridLayout)

     GirdLayout布局:将容器分为多行多列,组件被填充到每个网格中,添加到容器的组件会先放置在左上角的网格中,然后从左往右放置其他组件,当占满该行的所有网格后,接着继续在下一行从左往右放置组件
     最常见的例子就是做一个计算器

这里写图片描述

代码:

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

public class Demo8_4 extends JFrame{

    //定义组件
    JButton jbs[] = null;
    public static void main(String[] args) {
        Demo8_4 demo8_4= new Demo8_4();
    }

    //构造函数
    public Demo8_4(){
        jbs = new JButton[9];
        //创建组件
        for(int i=0;i<9;i++)
            jbs[i] = new JButton("按钮"+i);

        //添加组件
        for(int i=0;i<9;i++)
            this.add(jbs[i]);

        //设置布局类型
        this.setLayout(new GridLayout(3,3,1,10));   //网格为3行3列 ,每行的组件相距为1,行与行之间的距离为10



        //设置容器属性
        this.setTitle("网格布局");
        this.setSize(400,300);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);




        //显示容器
        this.setVisible(true);
    }
}

注意:

1.所有的组件的大小都是相同的
2.可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网格的行/列,水平间隙/垂直间隙

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值