Java中布局管理器

布局管理器种类

FlowLayout: 组件在一行中从左至右水平排列,排满后折行,它是Panel、Applet的默认布局管理器。

BorderLayout:北、南、东、西、中,它是Window、Frame、Dialog的默认布局管理器。

GridLayout:以行和列的网格形式安排组件

GridBagLayout:更复杂、功能更强的网格布局

CardLayout:每一个组件作为一个卡片,容器仅显示多个卡片中的某一个确定容器布局

 

1.容器的组件布局

(1)布局管理器(layout manager)

负责确定组件在容器中的位置和大小。

调用容器的setLayout(布局管理器对象) 方法,为容器指定某种布局管理器的一个对象。

当容器需要定位组件和确定组件大小时,就会给布局管理器对象发消息,让它完成该项工作。

(2)直接管理组件

调用容器的 setLayout(null) 方法,关闭布局管理器。

调用每一个组件的setLocation()方法决定组件位置。

调用每一个组件的setSize()方法决定其大小。

(3)直接管理组件将失去平台无关性。

 

2.FlowLayout布局管理器

构造函数:

FlowLayout() ;

FlowLayout(int align, int hgap, int vgap);

align :对齐方式:LEFT  CENTER  RIGHT

hgap :组件水平间距 (象素)

vgap :组件垂直间距

无参数的构造函数创建的FlowLayout对象,其对齐方式为CENTER居中方式,组件间的横纵间距都为5个像素

Frame f = new Frame("FlowLayout");

f.setSize(400,300);  //不起作用

f.setBackground(Color.gray);

f.setLayout(new FlowLayout(FlowLayout.LEFT,10,20));

b1 = new Button("button1");

b2 = new Button("button2");

b3 = new Button("button3");

f.add(b1);

f.add(b2);

f.add(b3);

f.setVisible(true);

f.pack();

 

3.BorderLayout布局管理器

setLayout(new BorderLayout() )

add(b1,BorderLayout.NORTH); //东、西、南、北中

当容器大小改变,组件相对位置不会改变

setLayout(new BorderLayout() )

add(b1,BorderLayout.NORTH);

当容器大小改变,组件相对位置不会改变

Frame f = new Frame("BorderLayout");

f.setSize(200,200);

b1 = new Button("button1");

b5 = new Button("button5");

f.add(b1,BorderLayout.NORTH);

f.add(b2,BorderLayout.SOUTH);

f.add(b3,BorderLayout.WEST);

f.add(b4,BorderLayout.EAST);

f.add(b5,BorderLayout.CENTER);

f.setVisible(true);

 

4.GridLayout布局管理器

创建GridLayout对象作为布局编辑器,指定划分网格的行数和列数(网格大小一样)。

setLayout(new GridLayout(行数, 列数));

setLayout(new GridLayout(行数, 列数,行间隔,列间隔));

调用容器的方法add()将组件加入容器,组件填入容器的顺序将按照第一行第一个、第一行第二个、……

每个网格中都必须填入组件,如果希望某个网格为空白,可以为它加入一个空的标签:

add (new Label());

Frame f = new Frame("GridLayout");

f.setLayout(new GridLayout(2,3));

f.setSize(200,100);

f.setBackground(Color.gray);

b1 = new Button("1");

b6 = new Button("6");

f.add(b1);

f.setVisible(true);

posted @ 2011-08-25 15:20  无敌小钰  阅读(3699)  评论(0编辑  收藏  举报