java.lang.Object javax.swing.BoxLayout
public class BoxLayout
允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。
|
用水平组件和垂直组件的不同组合嵌套多面板的作用类似于 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
。
字段摘要 | |
---|---|
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 |
字段详细信息 |
---|
public static final int X_AXIS
public static final int Y_AXIS
public static final int LINE_AXIS
ComponentOrientation
属性确定的文本行方向放置组件。
public static final int PAGE_AXIS
ComponentOrientation
属性确定的文本行在页面中的流向来放置组件。
构造方法详细信息 |
---|
public BoxLayout(Container target, int axis)
target
- 需要布置的容器
axis
- 布置组件时使用的轴。它可以是以下值之一:
BoxLayout.X_AXIS
、
BoxLayout.Y_AXIS
、
BoxLayout.LINE_AXIS
或
BoxLayout.PAGE_AXIS
AWTError
- 如果
axis
的值无效
方法详细信息 |
---|
public final Container getTarget()
public final int getAxis()
BoxLayout.X_AXIS
、
BoxLayout.Y_AXIS
、
BoxLayout.LINE_AXIS
或
BoxLayout.PAGE_AXIS
public void invalidateLayout(Container target)
在 Container 上调用 invalidate 方法时,由 AWT 调用此方法。因为可以对事件线程异步调用 invalidate 方法,所以可以异步调用此方法。
LayoutManager2
中的
invalidateLayout
target
- 受影响的容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
public void addLayoutComponent(String name, Component comp)
LayoutManager
中的
addLayoutComponent
name
- 组件的名称
comp
- 组件
public void removeLayoutComponent(Component comp)
LayoutManager
中的
removeLayoutComponent
comp
- 组件
public void addLayoutComponent(Component comp, Object constraints)
LayoutManager2
中的
addLayoutComponent
comp
- 组件
constraints
- 约束
public Dimension preferredLayoutSize(Container target)
LayoutManager
中的
preferredLayoutSize
target
- 需要布置的容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
Container
,
minimumLayoutSize(java.awt.Container)
,
maximumLayoutSize(java.awt.Container)
public Dimension minimumLayoutSize(Container target)
LayoutManager
中的
minimumLayoutSize
target
- 需要布置的容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
preferredLayoutSize(java.awt.Container)
,
maximumLayoutSize(java.awt.Container)
public Dimension maximumLayoutSize(Container target)
LayoutManager2
中的
maximumLayoutSize
target
- 需要布置的容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
preferredLayoutSize(java.awt.Container)
,
minimumLayoutSize(java.awt.Container)
public float getLayoutAlignmentX(Container target)
LayoutManager2
中的
getLayoutAlignmentX
target
- 容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
public float getLayoutAlignmentY(Container target)
LayoutManager2
中的
getLayoutAlignmentY
target
- 容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器
public void layoutContainer(Container target)
LayoutManager
中的
layoutContainer
target
- 要布置的容器
AWTError
- 如果目标容器不是指定给 BoxLayout 构造方法的容器