java.lang.Objectjava.awt.BorderLayout
public class BorderLayout
这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。当使用边框布局将一个组件添加到容器中时,要使用这五个常量之一,例如:
Panel p = new Panel();
p.setLayout(new BorderLayout());
p.add(new Button("Okay"), BorderLayout.SOUTH);
为了方便起见,
BorderLayout 将缺少字符串说明的情况解释为常量
CENTER:
Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
p2.add(new TextArea()); // Same as p.add(new TextArea(), BorderLayout.CENTER);
此外,BorderLayout 支持相对定位常量 PAGE_START、PAGE_END、LINE_START 和 LINE_END。在 ComponentOrientation 设置为 ComponentOrientation.LEFT_TO_RIGHT 的容器中,这些常量分别映射到 NORTH、SOUTH、WEST 和 EAST。
为了与以前的版本兼容,BorderLayout 还包括相对定位常量 BEFORE_FIRST_LINE、AFTER_LAST_LINE、BEFORE_LINE_BEGINS 和 AFTER_LINE_ENDS。这些常量分别等同于 PAGE_START、PAGE_END、LINE_START 和 LINE_END。为了与其他组件使用的相对定位常量一致,应优先使用后一组常量。
将绝对定位常量与相对定位常量混合会产生无法预料的结果。如果两种类型的常量都使用,则优先采用相对常量。例如,如果同时使用 NORTH 和 PAGE_START 常量在方向性为 LEFT_TO_RIGHT 的容器中添加组件,则只体现 PAGE_START 布局。
注:目前,在 Java 2 Platform v1.2 中,BorderLayout 不支持垂直方向。不考虑容器的 ComponentOrientation 上 isVertical 设置。
根据其首选大小和容器大小的约束 (constraints) 对组件进行布局。NORTH 和 SOUTH 组件可以在水平方向上拉伸;而 EAST 和 WEST 组件可以在垂直方向上拉伸;CENTER 组件可同时在水平和垂直方向上拉伸,从而填充所有剩余空间。
以下是一个使用 BorderLayout 布局管理器的例子,它对一个 applet 中的五个按钮进行布局:
此 applet 的代码如下:
import java.awt.*;
import java.applet.Applet;
public class buttonDir extends Applet {
public void init() {
setLayout(new BorderLayout());
add(new Button("North"), BorderLayout.NORTH);
add(new Button("South"), BorderLayout.SOUTH);
add(new Button("East"), BorderLayout.EAST);
add(new Button("West"), BorderLayout.WEST);
add(new Button("Center"), BorderLayout.CENTER);
}
}
Container.add(String, Component),
ComponentOrientation,
序列化表格
| 字段摘要 | |
|---|---|
static String |
AFTER_LAST_LINE 与 PAGE_END 同义。 |
static String |
AFTER_LINE_ENDS 与 LINE_END 同义。 |
static String |
BEFORE_FIRST_LINE 与 PAGE_START 同义。 |
static String |
BEFORE_LINE_BEGINS 与 LINE_START 同义。 |
static String |
CENTER 中间区域的布局约束(容器中央)。 |
static String |
EAST 东区域的布局约束(容器右边)。 |
static String |
LINE_END 组件出现在布局的行方向的结尾处。 |
static String |
LINE_START 组件出现在布局的行方向的开始处。 |
static String |
NORTH 北区域的布局约束(容器顶部)。 |
static String |
PAGE_END 组件出现在最后一行布局内容之后。 |
static String |
PAGE_START 组件出现在第一行布局内容之前。 |
static String |
SOUTH 南区域的布局约束(容器底部)。 |
static String |
WEST 西区域的布局约束(容器左边)。 |
| 构造方法摘要 | |
|---|---|
BorderLayout() 构造一个组件之间没有间距的新边框布局。 |
|
BorderLayout(int hgap, int vgap) 构造一个具有指定组件间距的边框布局。 |
|
| 方法摘要 | |
|---|---|
void |
addLayoutComponent(Component comp, Object constraints) 使用指定的约束对象将指定组件添加到布局中。 |
void |
addLayoutComponent(String name, Component comp) 已过时。 由 addLayoutComponent(Component, Object) 取代。 |
Object |
getConstraints(Component comp) 获取指定组件的约束 |
int |
getHgap() 返回组件之间的水平间距。 |
float |
getLayoutAlignmentX(Container parent) 返回沿 x 轴的对齐方式。 |
float |
getLayoutAlignmentY(Container parent) 返回沿 y 轴的对齐方式。 |
Component |
getLayoutComponent(Container target, Object constraints) 基于目标 Container 的组件方向,返回给定约束位置对应的组件。 |
Component |
getLayoutComponent(Object constraints) 获取使用给定约束添加的组件。 |
int |
getVgap() 返回组件之间的垂直间距。 |
void |
invalidateLayout(Container target) 使布局无效,指示如果布局管理器缓存了信息,则应该将其丢弃。 |
void |
layoutContainer(Container target) 使用此边框布局对容器参数进行布局。 |
Dimension |
maximumLayoutSize(Container target) 在给出指定目标容器中的组件的前提下,返回此布局的最大尺寸。 |
Dimension |
minimumLayoutSize(Container target) 使用此布局管理器确定 target 容器的最小大小。 |
Dimension |
preferredLayoutSize(Container target) 基于容器中的组件,使用此布局管理器确定 target 容器的首选大小。 |
void |
removeLayoutComponent(Component comp) 从此边框布局中移除指定组件。 |
void |
setHgap(int hgap) 设置组件之间的水平间距。 |
void |
setVgap(int vgap) 设置组件之间的垂直间距。 |
String |
toString() 返回此边框布局的状态的字符串表示形式。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 字段详细信息 |
|---|
public static final String NORTH
public static final String SOUTH
public static final String EAST
public static final String WEST
public static final String CENTER
public static final String BEFORE_FIRST_LINE
PAGE_START,
常量字段值
public static final String AFTER_LAST_LINE
public static final String BEFORE_LINE_BEGINS
LINE_START,
常量字段值
public static final String AFTER_LINE_ENDS
public static final String PAGE_START
Component.getComponentOrientation(),
常量字段值
public static final String PAGE_END
Component.getComponentOrientation(),
常量字段值
public static final String LINE_START
Component.getComponentOrientation(),
常量字段值
public static final String LINE_END
Component.getComponentOrientation(),
常量字段值
| 构造方法详细信息 |
|---|
public BorderLayout()
public BorderLayout(int hgap,
int vgap)
hgap 指定,垂直间距由
vgap 指定。
hgap - 水平间距。
vgap - 垂直间距。
| 方法详细信息 |
|---|
public int getHgap()
public void setHgap(int hgap)
hgap - 组件之间的水平间距
public int getVgap()
public void setVgap(int vgap)
vgap - 组件之间的垂直间距
public void addLayoutComponent(Component comp, Object constraints)
NORTH、
SOUTH、
EAST、
WEST 或
CENTER。
大多数应用程序并不直接调用此方法。当使用 Container.add 方法将组件添加到容器中时,可以使用相同的参数类型调用此方法。
LayoutManager2 中的
addLayoutComponent
comp - 要添加的组件。
constraints - 指定将组件添加到布局中的方式和位置的对象。
IllegalArgumentException - 如果约束对象不是一个字符串,或者它不是五种指定约束之一。
Container.add(java.awt.Component, java.lang.Object)
@Deprecated public void addLayoutComponent(String name, Component comp)
addLayoutComponent(Component, Object) 取代。
LayoutManager 复制的描述
comp 添加到布局,并将它与
name 指定的字符串关联。
LayoutManager 中的
addLayoutComponent
name - 要与组件关联的字符串
comp - 要添加的组件
public void removeLayoutComponent(Component comp)
remove 或
removeAll 方法时,可调用此方法。大多数应用程序并不直接调用此方法。
LayoutManager 中的
removeLayoutComponent
comp - 要移除的组件。
Container.remove(java.awt.Component),
Container.removeAll()
public Component getLayoutComponent(Object constraints)
constraints - 所需的约束,它是
CENTER、
NORTH、
SOUTH、
WEST、
EAST、
PAGE_START、
PAGE_END、
LINE_START、
LINE_END 之一
null
IllegalArgumentException - 如果约束对象不是九个指定约束之一
addLayoutComponent(java.awt.Component, java.lang.Object)
public Component getLayoutComponent(Container target, Object constraints)
Container 的组件方向,返回给定约束位置对应的组件。利用相对约束
PAGE_START、
PAGE_END、
LINE_START 和
LINE_END 添加的组件优先于利用显式约束
NORTH、
SOUTH、
WEST 和
EAST 添加的组件。
Container 的组件方向用于确定利用
LINE_START 和
LINE_END 添加的组件的位置。
constraints - 所需的绝对位置,
CENTER、
NORTH、
SOUTH、
EAST 和
WEST 之一
target -
Container,用来获取基于目标
Container 组件方向的约束位置。
null
IllegalArgumentException - 如果约束对象不是五个指定约束之一
NullPointerException - 如果目标参数为 null
addLayoutComponent(java.awt.Component, java.lang.Object)
public Object getConstraints(Component comp)
comp - 要查询的组件
addLayoutComponent(java.awt.Component, java.lang.Object)
public Dimension minimumLayoutSize(Container target)
target 容器的最小大小。
当容器调用其 getMinimumSize 方法时,可以调用此方法。大多数应用程序并不直接调用此方法。
LayoutManager 中的
minimumLayoutSize
target - 在其中进行布局的容器。
Container,
preferredLayoutSize(java.awt.Container),
Container.getMinimumSize()
public Dimension preferredLayoutSize(Container target)
target 容器的首选大小。
大多数应用程序并不直接调用此方法。容器调用其 getPreferredSize 方法时将调用此方法。
LayoutManager 中的
preferredLayoutSize
target - 在其中进行布局的容器。
Container,
minimumLayoutSize(java.awt.Container),
Container.getPreferredSize()
public Dimension maximumLayoutSize(Container target)
LayoutManager2 中的
maximumLayoutSize
target - 需要对其进行布局的组件
Container,
minimumLayoutSize(java.awt.Container),
preferredLayoutSize(java.awt.Container)
public float getLayoutAlignmentX(Container parent)
LayoutManager2 中的
getLayoutAlignmentX
public float getLayoutAlignmentY(Container parent)
LayoutManager2 中的
getLayoutAlignmentY
public void invalidateLayout(Container target)
LayoutManager2 中的
invalidateLayout
public void layoutContainer(Container target)
为了满足此 BorderLayout 对象的约束条件,此方法实际上会重塑指定容器中的组件。NORTH 和 SOUTH 组件(如果有)分别放置在容器的顶部和底部。WEST 和 EAST 组件分别放置在容器的左边和右边。最后,CENTER 对象放置在中间的任何剩余空间内。
大多数应用程序并不直接调用此方法。容器调用其 doLayout 方法时将调用此方法。
LayoutManager 中的
layoutContainer
target - 在其中进行布局的容器。
Container,
Container.doLayout()
public String toString()