这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:
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);
public static final
String
BEFORE_LINE_BEGINS
与 LINE_START 同义。为了与以前版本兼容而存在。首选 LINE_START。
从以下版本开始:
另请参见:
LINE_START
,
常量字段值
Object
constraints)
使用指定的约束对象将指定组件添加到布局中。对于边框布局,约束必须是以下约束之一:
NORTH
、
SOUTH
、
EAST
、
WEST
或
CENTER
。
大多数应用程序并不直接调用此方法。当使用
Container.add
方法将组件添加到容器中时,可以使用相同的参数类型调用此方法。
指定者:
接口
LayoutManager2
中的
addLayoutComponent
参数:
comp
- 要添加的组件。
constraints
- 指定将组件添加到布局中的方式和位置的对象。
IllegalArgumentException
- 如果约束对象不是一个字符串,或者它不是五种指定约束之一。
从以下版本开始:
JDK1.1
另请参见:
Container.add(java.awt.Component, java.lang.Object)
public void
removeLayoutComponent
(
Component
comp)
从此边框布局中移除指定组件。当容器调用其
remove
或
removeAll
方法时,可调用此方法。大多数应用程序并不直接调用此方法。
指定者:
接口
LayoutManager
中的
removeLayoutComponent
参数:
comp
- 要移除的组件。
另请参见:
Container.remove(java.awt.Component)
,
Container.removeAll()
参数:
constraints
- 所需的约束,它是
CENTER
、
NORTH
、
SOUTH
、
WEST
、
EAST
、
PAGE_START
、
PAGE_END
、
LINE_START
、
LINE_END
之一
返回:
给定位置上的组件;如果此位置为空,则返回
null
IllegalArgumentException
- 如果约束对象不是九个指定约束之一
从以下版本开始:
另请参见:
addLayoutComponent(java.awt.Component, java.lang.Object)
参数:
constraints
- 所需的绝对位置,
CENTER
、
NORTH
、
SOUTH
、
EAST
和
WEST
之一
target
-
Container
,用来获取基于目标
Container
组件方向的约束位置。
返回:
指定位置上的组件;如果此位置为空,则返回
null
IllegalArgumentException
- 如果约束对象不是五个指定约束之一
NullPointerException
- 如果目标参数为 null
从以下版本开始:
另请参见:
addLayoutComponent(java.awt.Component, java.lang.Object)
参数:
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 float
getLayoutAlignmentX
(
Container
parent)
返回沿 x 轴的对齐方式。这指出了相对于其他组件将如何排列该组件。该值应该在 0 到 1 之间,其中 0 表示根据原点进行对齐,1 表示根据距原点最远的点对齐,0.5 表示居中对齐等等。
指定者:
接口
LayoutManager2
中的
getLayoutAlignmentX
public float
getLayoutAlignmentY
(
Container
parent)
返回沿 y 轴的对齐方式。这指出了相对于其他组件将如何排列该组件。该值应该在 0 到 1 之间,其中 0 表示根据原点进行对齐,1 表示根据距原点最远的点对齐,0.5 表示居中对齐等等。
指定者:
接口
LayoutManager2
中的
getLayoutAlignmentY
使用此边框布局对容器参数进行布局。
为了满足此
BorderLayout
对象的约束条件,此方法实际上会重塑指定容器中的组件。
NORTH
和
SOUTH
组件(如果有)分别放置在容器的顶部和底部。
WEST
和
EAST
组件分别放置在容器的左边和右边。最后,
CENTER
对象放置在中间的任何剩余空间内。
大多数应用程序并不直接调用此方法。容器调用其
doLayout
方法时将调用此方法。
指定者:
接口
LayoutManager
中的
layoutContainer
参数:
target
- 在其中进行布局的容器。
另请参见:
Container
,
Container.doLayout()