Swing布局管理器文档.doc
Swing布局管理器文档
天一Star整体编著
概述
布局管理器的实现
布局管理器是一个实现了接口LayoutManager或LayoutManger2的一个类;
布局管理器的责任有:
·计算一个容器的首选尺寸、最小尺寸及最大尺寸。
·布置一个容器内的组件。
LayoutManager是一个接口,它定义了以下几个方法:
voidaddLayoutComponent(Stringname,Componentcomp)
voidremoveLayoutCompoenet(Stringname,Componentcomp)
DimensionpreferredLayoutSize(Containerparent)
DimensionminimumLayoutSize(Containerparent)
voidLayoutContainer(Containerparent)
LayoutManger2也是一个接口,它扩展了LayoutManger接口,包含方法如下:
voidaddLayoutComponent(Componentc,Objectconstraints)
DimensionmaximumLayoutSize(Container)
floatgetLayoutAlignmentx(Containerparent)
floatgetLayoutAlignmenty(Containerparent)
voidinvalidateLayout(Containerparent)
5,对LayoutManager2接口方法的说明
addLayoutComponent()允许向一个带有约束条件的布局管理器添加组件。
组成一个约束条件的对象的类型应符合LayoutManager2接口的需求。
例如,GridBagLayout的约束条件必须是一个GridBagConstraints引用,然而BorderLayout需要的约束条件是一个字符串。
maximumLayoutSize()返回容器的最大尺寸,而该容器已经给出了组件的当前约束条件。
getLayoutAlignment...方法被一些布局管理器用来沿着x和y轴定位组件。
invalidateLayout()表示布局管理器应该抛弃任何它隐藏的涉及约束条件的信息。
6标准AWT布局管理器实现的接口
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
布局管理器实现的接口字符串规定方位
─────────────────────────────────
BorderLayoutLayoutManager2字符串规定方位
CardLayoutLayoutManager2字符串规定名字
FlowLayoutLayoutManager无
GridBagLayoutLayoutManager2GridBagConstaints规定网格约束条件
GridLayoutLayoutManager无
─────────────────────────────────
7,布局管理器和组件首选尺寸
组件实现下面两个影响组件和布局管理器之间相互作用的方法:
//Componentmethods
publicDimensiongetPreferredSize();
publicDimensiongetMinimumSize();
从它们的名字可以猜到,getPreferredSize()返回组件的首选尺寸,getMinimumSize()返回组件可以接受的最小尺寸。
通过实现LayoutManager接口中的下列方法,布局管理器计算一个容器的首选和最小尺寸:
//LayoutMangermethods
DimensionpreferredLayoutSize(Container);
DimensionminimumLayoutSize(Container);
通常,这些方法循环容器中的所有组件,并利用每个组件的首选和最小尺寸计算容器的首选和最小尺寸。
布局管理器在layoutContainer()方法中布置组件:
voidlayoutContainer(Container);
一些布局管理器完全忽略它们所布置组件的首选尺寸,而另一些则很容易接受组件的请求,即根据它们的首选尺寸进行整形。尽管如此仍有一些布局管理器将只注意组件首选尺寸的一部分,BorderLayout将保留北边组件的首选高度,忽略组件的首选宽度,因此在水平方向扩展组