GUI——布局管理器

一、FlowLayout(顺序布局)

FlowLayout的布局策略是将容器中的组件按照加入的先后顺序从左向右排列,如果一行排满转下一行继续,默认每行采取居中排列

FlowLayout的成员变量:

1、align:指布局中每行的对齐方式,默认为向中对齐,align%3=0指向左对齐,align%3=1指向中对齐,align%3=2指向右对齐

2、hgap:指每行中组件的间隔,默认为5

3、vgap:指行与行之间的间隔,默认为5

FlowLayout的构造函数:

1、FlowLayout();

2、FlowLayout(align);

3、FlowLayout(align,hgap,vgap);

代码演示:

import java.awt.*;
public class Test
{
    public static void main(String []args)
    {
        Frame p=new Frame("顺序布局");
        p.setBounds(500,200,400,600);
        p.setVisible(true);
        Button bt1=new Button("1");
        Button bt2=new Button("2");
        Button bt3=new Button("3");
        Button bt4=new Button("4");
        Button bt5=new Button("5");
        FlowLayout flow=new FlowLayout(0,100,30);//实例化FlowLayout,向左对齐,水平间隔100,行距30
        p.setLayout(flow);//为容器添加顺序布局管理器
        p.add(bt1);p.add(bt2);p.add(bt3);p.add(bt4);//向容器里添加按钮
        p.add(bt5);
    }
}

二、BorderLayout(边界布局)

BorderLayout布局策略是把容器内的空间划分为东、西、南、北、中5个区域分别用英文的East、West、South、North、Center表示(如图所示),向容器中加入每个组件都要指明在容器的区域,若不指名所在区域则默认是Center,每个区域只能放置一个组件,后放置的组件会覆盖先放置的组件

GUI——布局管理器

指明组件所在区域的方法:容器.add(组件,BorderLayout.区域);

BorderLayout的成员变量:

1、Hgap:区域与区域之间的水平间隔,默认为0

2、Vgap:区域与区域之间的竖直间隔,默认为0

BorderLayout的构造函数:

1、BorderLayout();

2、BorderLayout(hgap,vgap);

代码演示:

import java.awt.*;
public class Test
{
    public static void main(String []args)
    {
        Frame p=new Frame("BorderLayout");
        p.setBounds(500,200,400,400);
        p.setVisible(true);
        Button bt1=new Button("East");
        Button bt2=new Button("West");
        Button bt3=new Button("South");
        Button bt4=new Button("North");
        Button bt5=new Button("Center");
        BorderLayout bl=new BorderLayout(20,40);//实例化BorderLayout,水平间隔20,竖直间隔40
        p.setLayout(bl);
        p.add(bt1,BorderLayout.EAST);
        p.add(bt2,BorderLayout.WEST);
        p.add(bt3,BorderLayout.SOUTH);
        p.add(bt4,BorderLayout.NORTH);
        p.add(bt5,BorderLayout.CENTER);
    }
}

三、CardLayout(卡片布局)

使用 CardLayout 的容器可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,就像一叠“扑克牌”每次只能显示最上面一张一样,这个被显示的组件将占据所有的容器空间,依次排序。

四、GridLayout(网格布局)

GridLayout 的布局策略是把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中。GridLayout 比较灵活,划分多少网格由程序自由控制,而且组件定位也比较精确.

GridLayout的成员变量:

1、rows:网格的行数,默认为1

2、cols:网格的列数,默认为0

3、hgap:网格之间的水平间隔,默认为0

4、vgap:行与行之间的间隔,默认为0

GridLayout的构造函数:

1、GridLayout();

2、GridLayout(rows,cols);

3、GridLayout(rows,cols,hgap,vgap);

代码演示:

import java.awt.*;
public class Test
{
    public static void main(String []args)
    {
        Frame p=new Frame("GridLayout");
        p.setVisible(true);
        p.setBounds(500,100,400,600);
        Button bt1=new Button("1");
        Button bt2=new Button("2");
        Button bt3=new Button("3");
        Button bt4=new Button("4");
        Button bt5=new Button("5");
        GridLayout gl=new GridLayout(2,3);//2行3列
        p.setLayout(gl);
        p.add(bt1);
        p.add(bt2);
        p.add(bt3);
        p.add(bt4);
        p.add(bt5);
    }
}

五、GridBagLayout(复杂网格布局)

这种布局方式需要使用类GridBagConstraints的对象来进行布局,这个类的对象说明了组件在GridBagLayout中的各种属性

添加组件的方法:容器.add(组件,类GridBagConstraints的对象)

GridBagConstraints的成员变量:

1、gridx:将组件添加在的水平位置

2、gridy:将组件添加在的竖直位置

3、gridwidth:组件在水平方向上占据的方格数

4、gridheight:组件在竖直方向上占据的方格数

5、weightx:组件随界面在水平方向上拉伸的幅度

6、weighty:组件随界面在竖直方向上拉伸的幅度

7、anchor:当组件没有空格大时,将组件放置的位置

8、fill:当组件没有空格大时,组件将空格填满的方式,由以下常量来定义:

GridBagConstraints.NONE:不填满

GridBagConstraints.HORIZONTAL:只将水平方向填满

GridBagConstraints.VERTICAL:只将竖直方向填满

GridBagConstraints.BOTH:将水平和竖直方向都填满

六、null 布局

可以把一个容器的布局设置为 null ,此时可以通过 setSize 、 setLayout 、 setBounds 等方法准确地定位组件在容器中的位置