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,每个区域只能放置一个组件,后放置的组件会覆盖先放置的组件
指明组件所在区域的方法:容器.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 等方法准确地定位组件在容器中的位置