java.awt包中组件的布局
容器可以调用setLayout(布局对象)方法来设置自己的布局1.流水布局:FlowLayout 布局策略:加入到容器中的组件将按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列,每一行中的组件都 居中对齐,组件之间的默认水平和垂直间隙是5个像素,组件的大小为默认的最佳大小 构造方法:FlowLayout(
容器可以调用setLayout(布局对象)方法来设置自己的布局
1.流水布局:FlowLayout
布局策略:加入到容器中的组件将按照加入的先后顺序从左向右排列,一行排满之后就转到下一行继续从左至右排列,每一行中的组件都
居中对齐,组件之间的默认水平和垂直间隙是5个像素,组件的大小为默认的最佳大小
构造方法:FlowLayout()
常用方法:setHgap(int hgap):重新设置布局的水平间隙hgap
setVgap(int vgap):重新设置布局的垂直间隙vgap
public void setAlignment(int n):重新设置容器布局的对齐方式,n取值如下
FlowLayout.LEFT,FlowLayout.CENTER,FlowLayout.RIGHT
注意:对于添加到使用这种布局的容器中的组件,组件调用setSize(int x,int y)方法设置的大小无效
2.边界布局:BorderLayout
布局策略:使用这种布局的容器最多只能添加5个组件,并且必须使用以下方法将组件添加到容器中
public void add(组件名,int n):n决定将组件添加到容器中的哪个区域,取值如下:BorderLayout.NORTH,
BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.EAST,
BorderLayout.CENTER
注意:添加到某个区域的组件将占据整个区域,每个区域只能放置一个组件,如果向某个已放置了组件的区域再放置一个组件,则先前
的组件将被后者替换掉
3.牌式布局:CardLayout
布局策略:在同一时刻,只能从加入到容器中的组件中选出一个来显示,这个被显示的组件将占据所有的容器空间
使用这种容器的步骤如下:
A.创建一个CardLayout对象:CardLayout card=new CardLayout();
B.将某个容器con的布局设置为该布局:con.setLayout(card);
C.容器con调用以下方法将组件添加到容器中
add(String s,Component b)
b:组件名
s:组件的代号,不同的组件代号应互不相同
D.CardLayout对象可以调用以下方法显示容器中的组件
show(容器名,组件代号):显示指定代号的组件
first(容器名):显示加入到容器中的第一个组件
last(容器名):显示最后一个组件
previous(容器名):显示上一个组件
next(容器名):显示下一个组件
4. 网格布局:GridLayout
布局策略:把容器划分成若干行乘若干列的网格区域,组件就位于这些划分出来的小格中;每个网格都是大小相同并且强
制组件与网格的大小相同
构造方法:GridLayout(int m,int n)
m为行数,n为列数
5.盒式布局:BoxLayout
该类在javax.swing.border包中,而不是在包java.awt中
布局策略:加入到容器中的组件排列在一行(或一列),组件按照加入的先后的顺序从左向右(或从上向下)排列,容器的两端是剩余的空间
,即使组件再多,也不会延伸到下一行(或下一列),这些组件可能会被缩小大小,紧缩在这一行(或一列)中
构造方法:BoxLayout(容器名,int axis)
axis决定盒式布局是行型盒式布局还是列型盒式布局,取值如下
BoxLayout.X_AXIS:行型
BoxLayout.Y_AXIS:列型
Box:它是一个盒式容器,其默认布局为盒式布局,而且不允许更改盒式容器的布局;它也是在包javax.swing中
构造方法:createHorizontalBox():获取一个行型盒式布局的盒式容器
createVerticalBox():获取一个列型盒式布局的盒式容器
常用类方法:createHorizontalStruct(int width):设置盒式容器中组件的水平间隙width
createVerticalStruct(int height):设置盒式容器中组件的垂直间隙height
6.空布局:null
当一个组件使用setBounds(int a,int b,int width,int height)方法将其定位在容器中的某个位置后,如果容器不使用空布局,
则setBounds(int a,int b,int width,int height)方法将失效
更多推荐
所有评论(0)