public class BoxLayout extends Object implements LayoutManager2, Serializable
嵌套具有不同水平和垂直组合的多个面板会产生类似于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's ComponentOrientation property. If the container's ComponentOrientation is horizontal then components are laid out horizontally, otherwise they are laid out vertically. For horizontal orientations, if the container's ComponentOrientation 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's ComponentOrientation property. If the container's ComponentOrientation is horizontal then components are laid out vertically, otherwise they are laid out horizontally. For horizontal orientations, if the container's ComponentOrientation 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
。
Modifier and Type | Field and Description |
---|---|
static int |
LINE_AXIS
指定组件应按目标容器的
ComponentOrientation 属性确定的文本行的
ComponentOrientation 。
|
static int |
PAGE_AXIS
指定组件应按照目标容器的
ComponentOrientation 属性确定的
ComponentOrientation 在一个页面上。
|
static int |
X_AXIS
指定组件应从左到右布置。
|
static int |
Y_AXIS
指定组件应该从上到下布置。
|
Constructor and Description |
---|
BoxLayout(Container target, int axis)
创建一个布局管理器,它将沿着给定的轴布局组件。
|
Modifier and Type | Method and Description |
---|---|
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)
本课不使用
|
public static final int X_AXIS
public static final int Y_AXIS
public static final int LINE_AXIS
ComponentOrientation
属性确定的文本行的
ComponentOrientation
。
public static final int PAGE_AXIS
ComponentOrientation
属性所确定的方向排列在一个页面上。
@ConstructorProperties(value={"target","axis"}) public BoxLayout(Container target, int axis)
target
- 需要布置的容器
axis
- 沿线布置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调用此方法。 由于无效方法可能与事件线程异步调用,因此可能会异步调用此方法。
invalidateLayout
在界面
LayoutManager2
target
- 受影响的容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
public void addLayoutComponent(String name, Component comp)
addLayoutComponent
在界面
LayoutManager
name
-
name
的名称
comp
- 组件
public void removeLayoutComponent(Component comp)
removeLayoutComponent
在界面
LayoutManager
comp
- 组件
public void addLayoutComponent(Component comp, Object constraints)
addLayoutComponent
在界面
LayoutManager2
comp
- 组件
constraints
- 约束
public Dimension preferredLayoutSize(Container target)
preferredLayoutSize
在界面
LayoutManager
target
- 需要布置的容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
Container
, minimumLayoutSize(java.awt.Container)
, maximumLayoutSize(java.awt.Container)
public Dimension minimumLayoutSize(Container target)
minimumLayoutSize
在界面
LayoutManager
target
- 需要布置的容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
preferredLayoutSize(java.awt.Container)
,
maximumLayoutSize(java.awt.Container)
public Dimension maximumLayoutSize(Container target)
maximumLayoutSize
在界面
LayoutManager2
target
- 需要布置的容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
preferredLayoutSize(java.awt.Container)
,
minimumLayoutSize(java.awt.Container)
public float getLayoutAlignmentX(Container target)
getLayoutAlignmentX
在界面
LayoutManager2
target
- 容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
public float getLayoutAlignmentY(Container target)
getLayoutAlignmentY
在界面
LayoutManager2
target
- 容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器
public void layoutContainer(Container target)
layoutContainer
在界面
LayoutManager
target
- 放置的容器
AWTError
- 如果目标不是指定给BoxLayout构造函数的容器