JavaTM Platform
Standard Ed. 6

javax.swing
类 BoxLayout

java.lang.Object
  继承者 javax.swing.BoxLayout
所有已实现的接口:
LayoutManager, LayoutManager2, Serializable
直接已知子类:
DefaultMenuLayout

public class BoxLayout
extends Object
implements LayoutManager2, Serializable

允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。

以下文本是对此图像的描述。

用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 GridBagLayout,但没那么复杂。该图显示了两个水平排列的面板,每个面板都包含 3 个垂直排列的组件。

BoxLayout 管理器是用 axis 参数构造的,该参数指定了将进行的布局类型。有四个选择:

X_AXIS:从左到右水平布置组件。
Y_AXIS:从上到下垂直布置组件。
LINE_AXIS:根据容器的 ComponentOrientation 属性,按照文字在一行中的排列方式布置组件。如果容器的 ComponentOrientation 表示水平,则将组件水平放置,否则将它们垂直放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上到下放置的。
PAGE_AXIS:根据容器的 ComponentOrientation 属性,按照文本行在一页中的排列方式布置组件。如果容器的 ComponentOrientation 表示水平,则将组件垂直放置,否则将它们水平放置。对于水平方向,如果容器的 ComponentOrientation 表示从左到右,则组件从左到右放置,否则将它们从右到左放置。对于垂直方向,组件总是从上向下放置的。

对于所有方向,组件按照将它们添加到容器中的顺序排列。

BoxLayout 试图按照组件的首选宽度(对于水平布局)或首选高度(对于垂直布局)来排列它们。对于水平布局,如果并不是所有的组件都具有相同的高度,则 BoxLayout 会试图让所有组件都具有最高组件的高度。如果对于某一特定组件而言这是不可能的,则 BoxLayout 会根据该组件的 Y 调整值对它进行垂直调整。默认情况下,组件的 Y 调整值为 0.5,这意味着组件的垂直中心应该与其他 Y 调整值为 0.5 的组件的垂直中心具有相同 Y 坐标。

同样地,对于垂直布局,BoxLayout 试图让列中的所有组件具有最宽组件的宽度。如果这样做失败,则 BoxLayout 会根据这些组件的 X 调整值对它进行水平调整。对于 PAGE_AXIS 布局,基于组件的开始边水平调整。换句话说,如果容器的 ComponentOrientation 表示从左到右,则 X 调整值为 0.0 意味着组件的左边缘,否则它意味着组件的右边缘。

许多程序使用 Box 类,而不是直接使用 BoxLayout。Box 类是使用 BoxLayout 的轻量级容器。它还提供了一些帮助您很好地使用 BoxLayout 的便利方法。要获取您想要的排列,将组件添加到多个嵌套的 box 中是一种功能强大的方法。

有关更多信息和示例,请参阅 The Java Tutorial 中的 How to Use BoxLayout 一节。

警告:此类的已序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder

另请参见:
Box, ComponentOrientation, JComponent.getAlignmentX(), JComponent.getAlignmentY()

字段摘要
static int LINE_AXIS
          指定应该根据目标容器的 ComponentOrientation 属性确定的文本行方向放置组件。
static int PAGE_AXIS
          指定应该根据目标容器的 ComponentOrientation 属性确定的文本行在页面中的流向来放置组件。
static int X_AXIS
          指定组件应该从左到右放置。
static int Y_AXIS
          指定组件应该从上到下放置。
 
构造方法摘要
BoxLayout(Container target, int axis)
          创建一个将沿给定轴放置组件的布局管理器。
 
方法摘要
 void addLayoutComponent(Component comp, Object constraints)
          此类不使用。
 void addLayoutComponent(String name, Component comp)
          此类不使用。
 int getAxis()
          返回用于布局组件的轴。
 float getLayoutAlignmentX(Container target)
          返回容器沿 X 轴的对齐方式。
 float getLayoutAlignmentY(Container target)
          返回容器沿 Y 轴的对齐方式。
 Container getTarget()
          返回使用此布局管理器的容器。
 void invalidateLayout(Container target)
          指示一个子容器已经更改其布局相关信息,因此应该刷新所有已缓存的计算结果。
 void layoutContainer(Container target)
          在需要布置指定容器时,由 AWT 调用 。
 Dimension maximumLayoutSize(Container target)
          返回目标容器布置其所包含的组件时可使用的最大尺寸。
 Dimension minimumLayoutSize(Container target)
          返回布置包含在指定目标容器中的组件所需的最小尺寸。
 Dimension preferredLayoutSize(Container target)
          在给出指定目标容器中的组件的前提下,返回此布局的首选尺寸。
 void removeLayoutComponent(Component comp)
          此类不使用。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

X_AXIS

public static final int X_AXIS
指定组件应该从左到右放置。

另请参见:
常量字段值

Y_AXIS

public static final int Y_AXIS
指定组件应该从上到下放置。

另请参见:
常量字段值

LINE_AXIS

public static final int LINE_AXIS
指定应该根据目标容器的 ComponentOrientation 属性确定的文本行方向放置组件。

另请参见:
常量字段值

PAGE_AXIS

public static final int PAGE_AXIS
指定应该根据目标容器的 ComponentOrientation 属性确定的文本行在页面中的流向来放置组件。

另请参见:
常量字段值
构造方法详细信息

BoxLayout

public BoxLayout(Container target,
                 int axis)
创建一个将沿给定轴放置组件的布局管理器。

参数:
target - 需要布置的容器
axis - 布置组件时使用的轴。它可以是以下值之一:BoxLayout.X_AXISBoxLayout.Y_AXISBoxLayout.LINE_AXISBoxLayout.PAGE_AXIS
抛出:
AWTError - 如果 axis 的值无效
方法详细信息

getTarget

public final Container getTarget()
返回使用此布局管理器的容器。

返回:
使用此布局管理器的容器
从以下版本开始:
1.6

getAxis

public final int getAxis()
返回用于布局组件的轴。返回下列轴之一:BoxLayout.X_AXISBoxLayout.Y_AXISBoxLayout.LINE_AXISBoxLayout.PAGE_AXIS

返回:
用于布局组件的轴
从以下版本开始:
1.6

invalidateLayout

public void invalidateLayout(Container target)
指示一个子容器已经更改其布局相关信息,因此应该刷新所有已缓存的计算结果。

在 Container 上调用 invalidate 方法时,由 AWT 调用此方法。因为可以对事件线程异步调用 invalidate 方法,所以可以异步调用此方法。

指定者:
接口 LayoutManager2 中的 invalidateLayout
参数:
target - 受影响的容器
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器

addLayoutComponent

public void addLayoutComponent(String name,
                               Component comp)
此类不使用。

指定者:
接口 LayoutManager 中的 addLayoutComponent
参数:
name - 组件的名称
comp - 组件

removeLayoutComponent

public void removeLayoutComponent(Component comp)
此类不使用。

指定者:
接口 LayoutManager 中的 removeLayoutComponent
参数:
comp - 组件

addLayoutComponent

public void addLayoutComponent(Component comp,
                               Object constraints)
此类不使用。

指定者:
接口 LayoutManager2 中的 addLayoutComponent
参数:
comp - 组件
constraints - 约束

preferredLayoutSize

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

指定者:
接口 LayoutManager 中的 preferredLayoutSize
参数:
target - 需要布置的容器
返回:
>= 0 && <= Integer.MAX_VALUE 的尺寸
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器
另请参见:
Container, minimumLayoutSize(java.awt.Container), maximumLayoutSize(java.awt.Container)

minimumLayoutSize

public Dimension minimumLayoutSize(Container target)
返回布置包含在指定目标容器中的组件所需的最小尺寸。

指定者:
接口 LayoutManager 中的 minimumLayoutSize
参数:
target - 需要布置的容器
返回:
>= 0 && <= Integer.MAX_VALUE 的尺寸
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器
另请参见:
preferredLayoutSize(java.awt.Container), maximumLayoutSize(java.awt.Container)

maximumLayoutSize

public Dimension maximumLayoutSize(Container target)
返回目标容器布置其所包含的组件时可使用的最大尺寸。

指定者:
接口 LayoutManager2 中的 maximumLayoutSize
参数:
target - 需要布置的容器
返回:
>= 0 && <= Integer.MAX_VALUE 的尺寸
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器
另请参见:
preferredLayoutSize(java.awt.Container), minimumLayoutSize(java.awt.Container)

getLayoutAlignmentX

public float getLayoutAlignmentX(Container target)
返回容器沿 X 轴的对齐方式。如果 box 是水平的,则返回默认对齐方式。否则,将返回沿 X 轴放置子组件所需的对齐方式。

指定者:
接口 LayoutManager2 中的 getLayoutAlignmentX
参数:
target - 容器
返回:
>= 0.0f && <= 1.0f 的调整值
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器

getLayoutAlignmentY

public float getLayoutAlignmentY(Container target)
返回容器沿 Y 轴的对齐方式。如果 box 是垂直的,则返回默认对齐方式。否则,将返回沿 Y 轴放置子组件所需的对齐方式。

指定者:
接口 LayoutManager2 中的 getLayoutAlignmentY
参数:
target - 容器
返回:
>= 0.0f && <= 1.0f 的调整值
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器

layoutContainer

public void layoutContainer(Container target)
在需要布置指定容器时,由 AWT 调用 。

指定者:
接口 LayoutManager 中的 layoutContainer
参数:
target - 要布置的容器
抛出:
AWTError - 如果目标容器不是指定给 BoxLayout 构造方法的容器

JavaTM Platform
Standard Ed. 6

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

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