JavaTM 2 Platform
Standard Ed. 5.0

java.awt
类 BorderLayout

java.lang.Object
  继承者 java.awt.BorderLayout
所有已实现的接口:
LayoutManager, LayoutManager2, Serializable

public class BorderLayout
extends Object
implements LayoutManager2, Serializable

这是一个布置容器的边界布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:南、北、东、西和中间区域。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTHSOUTHEASTWESTCENTER。当使用边界布局将一个组件添加到容器中时,要使用这五个常量之一,例如:

    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_STARTPAGE_ENDLINE_STARTLINE_END。在 ComponentOrientation 设置为 ComponentOrientation.LEFT_TO_RIGHT 的容器中,这些常量分别映射到 NORTHSOUTHWESTEAST

为了与以前的版本兼容,BorderLayout 还包括相对定位常量 BEFORE_FIRST_LINEAFTER_LAST_LINEBEFORE_LINE_BEGINSAFTER_LINE_ENDS。这些常量分别等同于 PAGE_STARTPAGE_ENDLINE_STARTLINE_END。为了与其他组件使用的相对定位常量一致,应优先使用较后列出的常量。

将绝对定位常量与相对定位常量混合会产生无法预料的结果。如果两种类型的常量都使用,则应优先采用相对常量。例如,如果使用 NORTHPAGE_START 常量在方向性为 LEFT_TO_RIGHT 的容器中添加组件,则只需对 PAGE_START 进行布局即可。

注:目前,在 Java 2 Platform v1.2 中,BorderLayout 不支持垂直定向。不考虑容器的 ComponentOrientation 上的 isVertical 设置。

根据其首选大小和容器大小的约束 (Constraints) 对组件进行布局。NORTHSOUTH 组件可以在水平方向上进行拉伸;而 EASTWEST 组件可以在垂直方向上进行拉伸;CENTER 组件在水平和垂直方向上都可以进行拉伸,从而填充所有剩余空间。

以下是一个使用 BorderLayout 布局管理器的例子,它对一个 applet 中的五个按钮进行布局:

描述 BorderLayout 的 applet 的图表。 
BorderLayout 的每个部分都包含一个对应于它在布局中的位置的 Button,它为以下五个常量之一: 
North、West、Center、East 或 South。

此 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);
   }
 }

从以下版本开始:
JDK1.0
另请参见:
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
 

字段详细信息

NORTH

public static final String NORTH
北区域的布局约束(容器的顶部)。

另请参见:
常量字段值

SOUTH

public static final String SOUTH
南区域的布局约束(容器的底部)。

另请参见:
常量字段值

EAST

public static final String EAST
东区域的布局约束(容器的右边)。

另请参见:
常量字段值

WEST

public static final String WEST
西区域的布局约束(容器的左边)。

另请参见:
常量字段值

CENTER

public static final String CENTER
中间区域的布局约束(容器的中央)。

另请参见:
常量字段值

BEFORE_FIRST_LINE

public static final String BEFORE_FIRST_LINE
PAGE_START 的同义字。为了与以前版本兼容而存在。PAGE_START 是首选。

从以下版本开始:
1.2
另请参见:
PAGE_START, 常量字段值

AFTER_LAST_LINE

public static final String AFTER_LAST_LINE
PAGE_END 的同义字。为了与以前版本兼容而存在。PAGE_END 是首选。

从以下版本开始:
1.2
另请参见:
PAGE_END, 常量字段值

BEFORE_LINE_BEGINS

public static final String BEFORE_LINE_BEGINS
LINE_START 的同义字。为了与以前版本兼容而存在。LINE_START 是首选。

从以下版本开始:
1.2
另请参见:
LINE_START, 常量字段值

AFTER_LINE_ENDS

public static final String AFTER_LINE_ENDS
LINE_END 的同义字。为了与以前版本兼容而存在。LINE_END 是首选。

从以下版本开始:
1.2
另请参见:
LINE_END, 常量字段值

PAGE_START

public static final String PAGE_START
在第一行布局内容之前出现的组件。对于 Western,方向是从左到右、从上到下,这等同于 NORTH。

从以下版本开始:
1.4
另请参见:
Component.getComponentOrientation(), 常量字段值

PAGE_END

public static final String PAGE_END
在最后一行布局内容之后出现的组件。对于 Western,方向是从左到右、从上到下,这等同于 SOUTH。

从以下版本开始:
1.4
另请参见:
Component.getComponentOrientation(), 常量字段值

LINE_START

public static final String LINE_START
该组件出现在布局的行方向的开始处。对于 Western,方向是从左到右、从上到下,这等同于 WEST。

从以下版本开始:
1.4
另请参见:
Component.getComponentOrientation(), 常量字段值

LINE_END

public static final String LINE_END
该组件出现在布局的行方向的结尾处。对于 Western,方向是从左到右、从上到下,这等同于 EAST。

从以下版本开始:
1.4
另请参见:
Component.getComponentOrientation(), 常量字段值
构造方法详细信息

BorderLayout

public BorderLayout()
构造一个组件之间没有间距的新边界布局。


BorderLayout

public BorderLayout(int hgap,
                    int vgap)
用指定的组件之间的水平间距构造一个边界布局。水平间距由 hgap 指定,而垂直间距由 vgap 指定。

参数:
hgap - 水平间距。
vgap - 垂直间距。
方法详细信息

getHgap

public int getHgap()
返回组件之间的水平间距。

从以下版本开始:
JDK1.1

setHgap

public void setHgap(int hgap)
设置组件之间的水平间距。

参数:
hgap - 组件之间的水平间距
从以下版本开始:
JDK1.1

getVgap

public int getVgap()
返回组件之间的垂直间距。

从以下版本开始:
JDK1.1

setVgap

public void setVgap(int vgap)
设置组件之间的垂直间距。

参数:
vgap - 组件之间的垂直间距
从以下版本开始:
JDK1.1

addLayoutComponent

public void addLayoutComponent(Component comp,
                               Object constraints)
使用指定的约束对象将指定组件添加到布局中。对于边界布局,约束必须是以下约束之一:NORTHSOUTHEASTWESTCENTER

大多数应用程序并不直接调用此方法。当使用 Container.add 方法将组件添加到容器中时,可以使用相同的参数类型调用此方法。

指定者:
接口 LayoutManager2 中的 addLayoutComponent
参数:
comp - 要添加的组件。
constraints - 指定将组件添加到布局中的方式和位置的对象。
抛出:
IllegalArgumentException - 如果约束对象不是一个字符串,或者它不是五种指定约束之一。
从以下版本开始:
JDK1.1
另请参见:
Container.add(java.awt.Component, java.lang.Object)

addLayoutComponent

@Deprecated
public void addLayoutComponent(String name,
                                          Component comp)
已过时。 addLayoutComponent(Component, Object) 取代。

从接口 LayoutManager 复制的描述
如果布局管理器使用每组件字符串,则将组件 comp 添加到布局,并将其与 name 指定的字符串关联。

指定者:
接口 LayoutManager 中的 addLayoutComponent
参数:
name - 要与组件关联的字符串
comp - 要添加的组件

removeLayoutComponent

public void removeLayoutComponent(Component comp)
从此边界布局中移除指定组件。当容器调用其 removeremoveAll 方法时,可调用此方法。大多数应用程序并不直接调用此方法。

指定者:
接口 LayoutManager 中的 removeLayoutComponent
参数:
comp - 要移除的组件。
另请参见:
Container.remove(java.awt.Component), Container.removeAll()

getLayoutComponent

public Component getLayoutComponent(Object constraints)
获得使用给定约束添加的组件。

参数:
constraints - 所需的约束,它是 CENTERNORTHSOUTHWESTEASTPAGE_STARTPAGE_ENDLINE_STARTLINE_END 之一
返回:
给定位置上的组件,如果此位置为空,则返回 null
抛出:
IllegalArgumentException - 如果约束对象不是九个指定约束之一
从以下版本开始:
1.5
另请参见:
addLayoutComponent(java.awt.Component, java.lang.Object)

getLayoutComponent

public Component getLayoutComponent(Container target,
                                    Object constraints)
基于目标 Container 的组件方向,获得给定约束位置所对应的组件

参数:
constraints - 所需的绝对位置,它是 CENTERNORTHSOUTHEASTWEST 之一
target - 使用此 BorderLayoutContainer
返回:
指定位置上的组件,如果此位置为空,则返回 null
抛出:
IllegalArgumentException - 如果约束对象不是五个指定约束之一
NullPointerException - 如果目标参数为 null
从以下版本开始:
1.5
另请参见:
addLayoutComponent(java.awt.Component, java.lang.Object)

getConstraints

public Object getConstraints(Component comp)
获得指定组件的约束

参数:
comp - 要查询的组件
返回:
指定组件的约束,如果组件为 null 或者并不在于此布局中,则返回 null
从以下版本开始:
1.5
另请参见:
addLayoutComponent(java.awt.Component, java.lang.Object)

minimumLayoutSize

public Dimension minimumLayoutSize(Container target)
使用此布局管理器确定 target 容器的最小大小。

当容器调用其 getMinimumSize 方法时,可以调用此方法。大多数应用程序并不直接调用此方法。

指定者:
接口 LayoutManager 中的 minimumLayoutSize
参数:
target - 在其中进行布局的容器。
返回:
对指定容器的子组件进行布局所需的最小尺寸。
另请参见:
Container, preferredLayoutSize(java.awt.Container), Container.getMinimumSize()

preferredLayoutSize

public Dimension preferredLayoutSize(Container target)
基于容器中的组件,使用此布局管理器确定 target 容器的首选大小。

大多数应用程序并不直接调用此方法。当容器调用其 getPreferredSize 方法时,可以调用此方法。

指定者:
接口 LayoutManager 中的 preferredLayoutSize
参数:
target - 在其中进行布局的容器。
返回:
对指定容器的子组件进行布局所需的首选尺寸。
另请参见:
Container, minimumLayoutSize(java.awt.Container), Container.getPreferredSize()

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
在给出指定目标容器中的组件的前提下,返回此布局的最大尺寸。

指定者:
接口 LayoutManager2 中的 maximumLayoutSize
参数:
target - 需要对其进行布局的组件
另请参见:
Container, minimumLayoutSize(java.awt.Container), preferredLayoutSize(java.awt.Container)

getLayoutAlignmentX

public float getLayoutAlignmentX(Container parent)
返回沿 x 轴的对齐方式。这指出了相对于其他组件将如何排列该组件。该值应该在 0 到 1 之间,其中,0 表示根据原点进行对齐,1 表示根据距原点最远的点对齐,0.5 表示居中对齐,等等。

指定者:
接口 LayoutManager2 中的 getLayoutAlignmentX

getLayoutAlignmentY

public float getLayoutAlignmentY(Container parent)
返回沿 y 轴的对齐方式。这指出了相对于其他组件将如何排列该组件。该值应该在 0 到 1 之间,其中,0 表示根据原点进行对齐,1 表示根据距原点最远的地方对齐,0.5 表示居中对齐,等等。

指定者:
接口 LayoutManager2 中的 getLayoutAlignmentY

invalidateLayout

public void invalidateLayout(Container target)
该方法可使布局无效,指示布局管理器是否具有它应该丢弃的缓存信息。

指定者:
接口 LayoutManager2 中的 invalidateLayout

layoutContainer

public void layoutContainer(Container target)
使用此边界布局对容器参数进行布局。

为了满足此 BorderLayout 对象的约束条件,此方法实际上会重塑指定容器中的组件。NORTHSOUTH 组件(如果有)分别放置在容器的顶端和底端。WESTEAST 组件分别放置在容器的左边和右边。最后,CENTER 对象放置在中间的任何剩余空间内。

大多数应用程序并不直接调用此方法。当容器调用其 doLayout 方法时,可以调用此方法。

指定者:
接口 LayoutManager 中的 layoutContainer
参数:
target - 在其中进行布局的容器。
另请参见:
Container, Container.doLayout()

toString

public String toString()
返回此边界布局的状态的字符串表示形式。

覆盖:
Object 中的 toString
返回:
此边界布局的字符串表示形式。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策