- java.lang.Object
-
- javax.swing.BoxLayout
-
- All Implemented Interfaces:
-
LayoutManager
,LayoutManager2
,Serializable
- 已知直接子类:
-
DefaultMenuLayout
public class BoxLayout extends Object implements 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,这意味着组件的垂直中心应具有与其他组件的垂直中心相同的Y坐标,并具有0.5 Y对齐方式。
类似地,对于垂直布局,BoxLayout尝试使列中的所有组件与最宽的组件一样宽。 如果失败,它们会根据它们的X对齐水平对准它们。 对于
PAGE_AXIS
布局,水平对齐是基于组件的前沿完成的。 换句话说,X对齐值为0.0表示组件的左边缘,如果容器的ComponentOrientation
从左到右,则表示组件的右边缘。而不是直接使用BoxLayout,许多程序使用Box类。 Box类是一个使用BoxLayout的轻量级容器。 它还提供方便的方法来帮助您使用BoxLayout。 将组件添加到多个嵌套框是获得所需安排的强大方式。
有关更多信息和示例,请参阅“Java教程”中的“ How to Use BoxLayout ”一节。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4版本开始,所有JavaBeans的长期存储支持已被添加到
java.beans
软件包中。 请参阅XMLEncoder
。- 从以下版本开始:
- 1.2
- 另请参见:
-
Box
,ComponentOrientation
,JComponent.getAlignmentX()
,JComponent.getAlignmentY()
, Serialized Form
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
指定组件应从左到右布置。- 另请参见:
- Constant Field Values
-
Y_AXIS
public static final int Y_AXIS
指定组件应该从上到下布置。- 另请参见:
- Constant Field Values
-
LINE_AXIS
public static final int LINE_AXIS
指定组件应按目标容器的ComponentOrientation
属性确定的文本行的方向ComponentOrientation
。- 另请参见:
- Constant Field Values
-
PAGE_AXIS
public static final int PAGE_AXIS
指定组件应按照目标容器的ComponentOrientation
属性确定的方向排列在一个页面上。- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
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调用此方法。 由于无效方法可能与事件线程异步调用,因此可能会异步调用此方法。
- 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构造函数的容器
-
-