- java.lang.Object
-
- javax.swing.BoxLayout
-
- 实现的所有接口
-
LayoutManager
,LayoutManager2
,Serializable
- 已知直接子类:
-
DefaultMenuLayout
public class BoxLayoutextends Objectimplements LayoutManager2, Serializable
布局管理器,允许垂直或水平布置多个组件。 这些部件不会包裹,因此,例如,当调整框架尺寸时,垂直布置的部件将保持垂直布置。 Example:使用水平和垂直的不同组合嵌套多个面板会产生类似于GridBagLayout的效果,而不会产生复杂性。 该图显示了两个水平排列的面板,每个面板包含垂直排列的3个组件。
BoxLayout管理器使用轴参数构造,该参数指定将要完成的布局类型。 有四种选择:
X_AXIS
- Components are laid out horizontally from left to right.Y_AXIS
- Components are laid out vertically from top to bottom.LINE_AXIS
- Components are laid out the way words are laid out in a line, based on the container'sComponentOrientation
property. If the container'sComponentOrientation
is horizontal then components are laid out horizontally, otherwise they are laid out vertically. For horizontal orientations, if the container'sComponentOrientation
is left to right then components are laid out left to right, otherwise they are laid out right to left. For vertical orientations components are always laid out from top to bottom.PAGE_AXIS
- Components are laid out the way text lines are laid out on a page, based on the container'sComponentOrientation
property. If the container'sComponentOrientation
is horizontal then components are laid out vertically, otherwise they are laid out horizontally. For horizontal orientations, if the container'sComponentOrientation
is left to right then components are laid out left to right, otherwise they are laid out right to left. For vertical orientations components are always laid out from top to bottom.对于所有方向,组件的排列顺序与添加到容器中的顺序相同。
BoxLayout尝试以其首选宽度(水平布局)或高度(垂直布局)排列组件。 对于水平布局,如果不是所有组件都具有相同的高度,BoxLayout会尝试使所有组件与最高组件一样高。 如果对于特定组件不可能,则BoxLayout根据组件的Y对齐垂直对齐该组件。 默认情况下,组件的Y对齐为0.5,这意味着组件的垂直中心应与具有0.5 Y对齐的其他组件的垂直中心具有相同的Y坐标。
类似地,对于垂直布局,BoxLayout尝试使列中的所有组件与最宽的组件一样宽。 如果失败,则根据X对齐水平对齐它们。 对于
PAGE_AXIS
布局,水平对齐基于组件的前沿完成。 换句话说,如果容器的ComponentOrientation
从左到右,则X对齐值0.0表示组件的左边缘,否则表示组件的右边缘。许多程序使用Box类,而不是直接使用BoxLayout。 Box类是一个使用BoxLayout的轻量级容器。 它还提供了方便的方法来帮助您很好地使用BoxLayout。 将组件添加到多个嵌套框是获得所需排列的有效方法。
有关更多信息和示例,请参阅“Java教程”中的 How to Use BoxLayout部分。
警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始,
java.beans
软件包中添加了对所有JavaBeansjava.beans
长期存储的支持。 请参阅XMLEncoder
。- 从以下版本开始:
- 1.2
- 另请参见:
-
Box
,ComponentOrientation
,JComponent.getAlignmentX()
,JComponent.getAlignmentY()
, Serialized Form
-
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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)
本课程不使用。
-
-
-
字段详细信息
-
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
属性确定的文本行方向ComponentOrientation
。- 另请参见:
- 常数字段值
-
PAGE_AXIS
public static final int PAGE_AXIS
指定组件应按照目标容器的ComponentOrientation
属性确定的ComponentOrientation
页面中流动的方向进行布局。- 另请参见:
- 常数字段值
-
-
构造方法详细信息
-
BoxLayout
@ConstructorProperties({"target","axis"})public BoxLayout(Container target, int axis)
创建一个布局管理器,它将沿给定轴布置组件。- 参数
-
target
- 需要布置的容器 -
axis
- 用于布置组件的轴。 可以是以下之一:BoxLayout.X_AXIS, BoxLayout.Y_AXIS, BoxLayout.LINE_AXIS
或BoxLayout.PAGE_AXIS
- 异常
-
AWTError
-如果值axis
无效
-
-
方法详细信息
-
getTarget
public final Container getTarget()
返回使用此布局管理器的容器。- 结果
- 使用此布局管理器的容器
- 从以下版本开始:
- 1.6
-
getAxis
public final int getAxis()
返回用于布局组件的轴。 返回以下之一:BoxLayout.X_AXIS, BoxLayout.Y_AXIS, BoxLayout.LINE_AXIS
或BoxLayout.PAGE_AXIS
- 结果
- 用于布局组件的轴
- 从以下版本开始:
- 1.6
-
invalidateLayout
public void invalidateLayout(Container target)
表示子项已更改其布局相关信息,因此应刷新任何缓存的计算。当在Container上调用invalidate方法时,AWT会调用此方法。 由于invalidate方法可以与事件线程异步调用,因此可以异步调用此方法。
- Specified by:
-
invalidateLayout
,界面LayoutManager2
- 参数
-
target
- 受影响的容器 - 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器
-
addLayoutComponent
public void addLayoutComponent(String name, Component comp)
本课程不使用。- Specified by:
-
addLayoutComponent
在界面LayoutManager
- 参数
-
name
- 组件的名称 -
comp
- 组件
-
removeLayoutComponent
public void removeLayoutComponent(Component comp)
本课程不使用。- Specified by:
-
removeLayoutComponent
在接口LayoutManager
- 参数
-
comp
- 组件
-
addLayoutComponent
public void addLayoutComponent(Component comp, Object constraints)
本课程不使用。- Specified by:
-
addLayoutComponent
,界面LayoutManager2
- 参数
-
comp
- 组件 -
constraints
- 约束
-
preferredLayoutSize
public Dimension preferredLayoutSize(Container target)
给定指定目标容器中的组件,返回此布局的首选尺寸。- Specified by:
-
preferredLayoutSize
在界面LayoutManager
- 参数
-
target
- 需要布置的容器 - 结果
- 维度> = 0 && <= Integer.MAX_VALUE
- 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器 - 另请参见:
-
Container
,minimumLayoutSize(java.awt.Container)
,maximumLayoutSize(java.awt.Container)
-
minimumLayoutSize
public Dimension minimumLayoutSize(Container target)
返回布置指定目标容器中包含的组件所需的最小尺寸。- Specified by:
-
minimumLayoutSize
在界面LayoutManager
- 参数
-
target
- 需要布置的容器 - 结果
- 维度> = 0 && <= Integer.MAX_VALUE
- 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器 - 另请参见:
-
preferredLayoutSize(java.awt.Container)
,maximumLayoutSize(java.awt.Container)
-
maximumLayoutSize
public Dimension maximumLayoutSize(Container target)
返回目标容器可用于布置其包含的组件的最大尺寸。- Specified by:
-
maximumLayoutSize
在界面LayoutManager2
- 参数
-
target
- 需要布置的容器 - 结果
- 维度> = 0 && <= Integer.MAX_VALUE
- 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器 - 另请参见:
-
preferredLayoutSize(java.awt.Container)
,minimumLayoutSize(java.awt.Container)
-
getLayoutAlignmentX
public float getLayoutAlignmentX(Container target)
返回容器沿X轴的对齐方式。 如果框是水平的,则将返回默认对齐方式。 否则,将返回沿X轴放置子项所需的对齐。- Specified by:
-
getLayoutAlignmentX
,界面LayoutManager2
- 参数
-
target
- 容器 - 结果
- alignment> = 0.0f && <= 1.0f
- 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器
-
getLayoutAlignmentY
public float getLayoutAlignmentY(Container target)
返回容器沿Y轴的对齐方式。 如果框是垂直的,则将返回默认对齐方式。 否则,将返回将子项放在Y轴上所需的对齐。- Specified by:
-
getLayoutAlignmentY
在界面LayoutManager2
- 参数
-
target
- 容器 - 结果
- alignment> = 0.0f && <= 1.0f
- 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器
-
layoutContainer
public void layoutContainer(Container target)
由AWT召集 何时需要布置指定的容器。- Specified by:
-
layoutContainer
在界面LayoutManager
- 参数
-
target
- 布局的容器 - 异常
-
AWTError
- 如果目标不是为BoxLayout构造函数指定的容器
-
-