public class GridLayout extends Object implements LayoutManager, Serializable
GridLayout
类是一个布局管理器,它将一个容器的组件放在矩形网格中。
容器被分成等大小的矩形,并且每个矩形中放置一个组件。
例如,以下是一个小程序,它将六个按钮放置成三行和两列:
import java.awt.*; import java.applet.Applet; public class ButtonGrid extends Applet { public void init() { setLayout(new GridLayout(3,2)); add(new Button("1")); add(new Button("2")); add(new Button("3")); add(new Button("4")); add(new Button("5")); add(new Button("6")); } }
如果容器的ComponentOrientation
属性是水平的并且从左到右,上述示例将生成图1所示的输出。如果容器的ComponentOrientation
属性是水平的并且从右到左,则该示例将生成如图2所示的输出。
当行数和列数都被设置为非零值时,无论是通过构造函数还是setRows和setColumns方法,都会忽略指定的列数。 而是从指定的行数和布局中的组件总数确定列的数量。 因此,例如,如果已经指定了三行和两列,并且将九个组件添加到布局,则它们将显示为三列三列。 仅当行数设置为零时,才指定列数影响布局。
Constructor and Description |
---|
GridLayout()
在单个行中创建一个每个组件的默认值为一列的网格布局。
|
GridLayout(int rows, int cols)
创建具有指定行数和列数的网格布局。
|
GridLayout(int rows, int cols, int hgap, int vgap)
创建具有指定行数和列数的网格布局。
|
Modifier and Type | Method and Description |
---|---|
void |
addLayoutComponent(String name, Component comp)
将具有指定名称的指定组件添加到布局。
|
int |
getColumns()
获取该布局中的列数。
|
int |
getHgap()
获得组件之间的水平间隙。
|
int |
getRows()
获取此布局中的行数。
|
int |
getVgap()
获取组件之间的垂直间距。
|
void |
layoutContainer(Container parent)
使用此布局放出指定的容器。
|
Dimension |
minimumLayoutSize(Container parent)
使用此网格布局确定容器参数的最小大小。
|
Dimension |
preferredLayoutSize(Container parent)
使用此网格布局确定容器参数的首选大小。
|
void |
removeLayoutComponent(Component comp)
从布局中删除指定的组件。
|
void |
setColumns(int cols)
将此布局中的列数设置为指定的值。
|
void |
setHgap(int hgap)
将组件之间的水平间距设置为指定的值。
|
void |
setRows(int rows)
将此布局中的行数设置为指定的值。
|
void |
setVgap(int vgap)
将组件之间的垂直间距设置为指定值。
|
String |
toString()
返回此网格布局值的字符串表示形式。
|
public GridLayout()
public GridLayout(int rows, int cols)
rows
和cols
中的一个但不是两者可以为零,这意味着可以将任意数量的对象放置在一行或一列中。
rows
- 行,值为零表示任意数量的行。
cols
- 列的值为零,表示任意数量的列。
public GridLayout(int rows, int cols, int hgap, int vgap)
此外,水平和垂直间隙被设置为指定的值。 每个列之间放置水平间隙。 在每行之间放置垂直间隙。
rows
和cols
中的一个但不是两者可以为零,这意味着可以将任意数量的对象放置在一行或一列中。
所有GridLayout
遵循这一个。
rows
- 行,值为零表示任意数量的行
cols
- 值为零,表示任意数量的列
hgap
- 水平间隙
vgap
- 垂直间隙
IllegalArgumentException
- 如果
rows
和
cols
的值都设置为零
public int getRows()
public void setRows(int rows)
rows
- 此布局中的行数
IllegalArgumentException
- 如果
rows
和
cols
的值都设置为零
public int getColumns()
public void setColumns(int cols)
cols
- 此布局中的列数
IllegalArgumentException
- 如果
rows
和
cols
的值都设置为零
public int getHgap()
public void setHgap(int hgap)
hgap
- 组件之间的水平间隙
public int getVgap()
public void setVgap(int vgap)
vgap
- 组件之间的垂直间隙
public void addLayoutComponent(String name, Component comp)
addLayoutComponent
中的
LayoutManager
name
-
name
的名称
comp
- 要添加的组件
public void removeLayoutComponent(Component comp)
removeLayoutComponent
在界面
LayoutManager
comp
- 要删除的组件
public Dimension preferredLayoutSize(Container parent)
网格布局的首选宽度是容器中所有组件的最大优先宽度乘以列数,加上水平填充次数,列数减1,加上目标容器的左和右插入。
网格布局的首选高度是容器中所有组件的最大优先高度乘以行数,加上垂直填充次数,行数减1,加上目标容器的顶部和底部插入。
preferredLayoutSize
在界面
LayoutManager
parent
- 进行布局的容器
minimumLayoutSize(java.awt.Container)
,
Container.getPreferredSize()
public Dimension minimumLayoutSize(Container parent)
网格布局的最小宽度是容器中所有组件的最大最小宽度乘以列数,加上水平填充次数,列数减1,加上目标容器的左和右插入。
网格布局的最小高度是容器中所有组件的最大最小高度乘以行数,加上垂直填充乘以行数减1,加上目标容器的顶部和底部插入。
minimumLayoutSize
中的
LayoutManager
parent
- 进行布局的容器
preferredLayoutSize(java.awt.Container)
,
Container.doLayout()
public void layoutContainer(Container parent)
该方法重塑指定目标容器中的组件,以满足GridLayout
对象的限制。
网格布局管理器根据布局中的行数和列数将容器中的可用空间分成相等大小的部分来确定各个组件的大小。 容器的可用空间等于容器的尺寸减去任何插入物和任何指定的水平或垂直间隙。 网格布局中的所有组件都具有相同的大小。
layoutContainer
在接口
LayoutManager
parent
- 要做布局的容器
Container
, Container.doLayout()