模块  java.desktop
软件包  javax.swing

Class BoxLayout

  • 实现的所有接口
    LayoutManagerLayoutManager2Serializable
    已知直接子类:
    DefaultMenuLayout

    public class BoxLayout
    extends Object
    implements LayoutManager2, Serializable
    布局管理器,允许垂直或水平布置多个组件。 这些部件不会包裹,因此,例如,当调整框架尺寸时,垂直布置的部件将保持垂直布置。 Example:

    The following text describes this graphic.

    使用水平和垂直的不同组合嵌套多个面板会产生类似于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,这意味着组件的垂直中心应与具有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软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    BoxComponentOrientationJComponent.getAlignmentX()JComponent.getAlignmentY()Serialized Form
    • 字段详细信息

      • 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_AXISBoxLayout.PAGE_AXIS
        异常
        AWTError -如果值 axis无效
    • 方法详细信息

      • getTarget

        public final Container getTarget()
        返回使用此布局管理器的容器。
        结果
        使用此布局管理器的容器
        从以下版本开始:
        1.6
      • getAxis

        public final int getAxis()
        返回用于布局组件的轴。 返回以下之一: BoxLayout.X_AXIS, BoxLayout.Y_AXIS, BoxLayout.LINE_AXISBoxLayout.PAGE_AXIS
        结果
        用于布局组件的轴
        从以下版本开始:
        1.6
      • invalidateLayout

        public void invalidateLayout​(Container target)
        表示子项已更改其布局相关信息,因此应刷新任何缓存的计算。

        当在Container上调用invalidate方法时,AWT会调用此方法。 由于invalidate方法可以与事件线程异步调用,因此可以异步调用此方法。

        Specified by:
        invalidateLayout ,界面 LayoutManager2
        参数
        target - 受影响的容器
        异常
        AWTError - 如果目标不是为BoxLayout构造函数指定的容器
      • 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构造函数指定的容器