Module  java.desktop
软件包  javax.swing

Class BoxLayout

  • All Implemented Interfaces:
    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,这意味着组件的垂直中心应具有与其他组件的垂直中心相同的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
    另请参见:
    BoxComponentOrientationJComponent.getAlignmentX()JComponent.getAlignmentY()Serialized Form
    • 字段详细信息

      • 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_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调用此方法。 由于无效方法可能与事件线程异步调用,因此可能会异步调用此方法。

        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构造函数的容器