第一节 第二节 第三节 第四节 第五节 第六节 第七节 第八节 第九节 第十节 第十一节
第四节    Java布局管理器
如果用户不指定容器所使用的布局管理器,那么容器将使用自己默认的布局管理器。每当容器需要改变外观时,这些默认的布局管理器会发挥作用。大多数布局管理器的方法都不需要程序直接调用。AWT提供的布局管理器各有各的长处和缺点。用户根据不同要求,选用不同的AWT布局管理器。基本规则是:
(1)若用户要求尽量使用所有的空间来显示组件,可以考虑使用BorderLayout。如果使用BorderLayout,用户应该将占用空间最大的组件放在中心部位。
当用户向使用BorderLayout布局管理器的容器中加入组件时,用户必须使用两个参数的add()方法,而且第一个参数必须为“North”、“South”、“East”、“West”或“Center”。如果用户使用一个参数的add()方法或指定的第一个参数无效,那么该组件将不能显示出来。
在默认情况下, BorderLayout将使它所管理的组件之间没有空隙,用户可以用下面的构造方法指定间隙(以像素为单位):
public BorderLayout(int horizontalGap, int verticalGap)
(2)若用户需要在紧凑的一行中以组件的自然尺寸显示较少的组件,用户可以考虑用面板容纳组件,并使用面板的默认布局管理器FlowLayout。
FlowLayout类有3个构造方法:
public FlowLayout()
pub1ic FlowLayout(int alignment)
pub1ic FlowLayout(int alignment,int horizontalGap,int verticalGap)
每一行组件将根据FlowLayout创建时alignment参数的指定要求放在屏幕的中心位置(默认)、左侧或右侧。alignment参数的值必须是FlowLayout.LEFT、 Flowlayout.CENTER或FlowLayout.RIGHT。horizontalGap和verticalGap参数指定了组件间隔距离(以像素为单位)。如果用户没有指定间隔值,FlowLayout将自动指定其值为5。
(3)若用户需要在多行或多列中显示一些同样尺寸的组件,GridLayout最适合此情况。如果有必要的话,可以使用面板来容纳组件。用户改变GridLayout所有管理的窗口的尺寸,用户将会看到GridLayout改变了单元空间的尺寸,使它们在容器的可用空间中尽可能的大。GridLayout是把组件严格限定在网格之中,而且网格尺寸都是一样的,每一组件只能放置于一个网格内。
GridLayout类有两个构造方法,定义如下:
public GridLayout(int rows, int columns)
public GridLayout(int rows, int columns, int horizontalGap, int verticalGap)
两构造函数中的rows和columns参数指定了行数和列数,它们中必须至少有一个为非零值。第二个构造方法中的horizontalGap和verticalGap参数指定了单元空间之间的间隔(以像素为单位)。如果用户不指定问隔值,它们的默认值为0。
(4)GridBagLayout则要复杂得多,而且灵活性也较大。它不要求每行每列有相同的尺寸,而且组件可以占据多于一个的网格。