Module  javafx.graphics
软件包  javafx.scene.layout

Class VBox

  • All Implemented Interfaces:
    StyleableEventTarget


    public class VBox
    extends Pane
    VBox把孩子放在一个垂直的立柱上。 如果vbox有一个边框和/或填充集,那么这些内容将被放置在这些插入内。

    VBox示例:

       VBox vbox = new VBox(8); // spacing = 8 vbox.getChildren().addAll(new Button("Cut"), new Button("Copy"), new Button("Paste"));  
    VBox将调整小孩的大小(如果可调整大小)到其首选高度,并使用其fillWidth属性来确定是否调整其宽度的大小以填充自己的宽度或将其宽度保持为首选(fillWidth默认为true)。 内容的对齐由alignment属性控制,默认为Pos.TOP_LEFT。

    如果vbox的大小大于其首选高度,默认情况下会使孩子保持其首选高度,留下额外的空间。 如果一个应用程序希望有一个或多个孩子被分配到额外的空间,它可以可选地为孩子设置一个vgrow约束。 有关详细信息,请参阅“可选布局约束”。

    不管孩子的可见财产价值如何,VBox都规定了每个被管理的孩子; 非托管儿童被忽视。

    可调整范围

    vbox的父级将在布局期间调整vbox可调整大小范围内的vbox大小。 默认情况下,vbox根据其内容计算该范围,如下表所示。

    VBox Resize Table width height minimum left/right insets plus the largest of the children's min widths. top/bottom insets plus the sum of each child's min height plus spacing between each child. preferred left/right insets plus the largest of the children's pref widths. top/bottom insets plus the sum of each child's pref height plus spacing between each child. maximum Double.MAX_VALUE Double.MAX_VALUE

    vbox的无界最大宽度和高度表示父级可以将其调整大小超出其首选大小,以填充分配给它的空间。

    VBox提供了直接设置大小范围的属性。 这些属性默认为哨兵值USE_COMPUTED_SIZE,但是应用程序可能会根据需要将它们设置为其他值:

       vbox.setPrefWidth(400);  
    应用程序可以通过将这些属性设置回USE_COMPUTED_SIZE来恢复计算值。

    默认情况下,VBox不会剪切其内容,所以如果孩子的最小大小阻止其在vbox中的适配,那么儿童边界可能会延伸到自己的边界之外。

    可选布局限制

    一个应用程序可以设置对个别孩子的约束,以定制VBox的布局。 对于每个约束,VBox提供了一种静态方法,用于在孩子上设置它。

    VBox Constraint Table Constraint Type Description vgrow javafx.scene.layout.Priority The vertical grow priority for the child. margin javafx.geometry.Insets Margin space around the outside of the child.

    例如,如果vbox需要将ListView分配给所有额外的空间:

       VBox vbox = new VBox(); ListView list = new ListView(); VBox.setVgrow(list, Priority.ALWAYS); vbox.getChildren().addAll(new Label("Names:"), list);  
    如果多个孩子具有相同的成长优先级设置,则vbox将为每个孩子分配等量的空间。 VBox只会使一个孩子达到最大高度,所以如果孩子的最大高度不是Double.MAX_VALUE,则应用程序可能需要重写max才能使其增长。
    从以下版本开始:
    JavaFX 2.0
    • 构造方法详细信息

      • VBox

        public VBox​()
        创建一个间距= 0并在TOP_LEFT对齐的VBox布局。
      • VBox

        public VBox​(double spacing)
        创建一个VBox布局,并指定子间间距。
        参数
        spacing - 每个孩子之间的垂直空间量
      • VBox

        public VBox​(Node... children)
        创建一个间距= 0的VBox布局。
        参数
        children - 此窗格的初始子项集。
        从以下版本开始:
        JavaFX 8.0
      • VBox

        public VBox​(double spacing,
                    Node... children)
        创建一个VBox布局,其间指定间隔。
        参数
        spacing - 每个孩子之间的水平空间量
        children - 此窗格的初始子项集。
        从以下版本开始:
        JavaFX 8.0
    • 方法详细信息

      • setVgrow

        public static void setVgrow​(Node child,
                                    Priority value)
        设置由vbox包含的小孩的垂直成长优先级。 如果设置,vbox将使用优先级来分配额外的空间,如果vbox的大小大于其首选高度。 如果多个vbox小孩具有相同的垂直成长优先级,那么额外的空间将在它们之间平均分配。 如果没有对子进行垂直增长优先级设置,则vbox将永远不会为其分配额外的垂直空间(如果可用)。 将值设置为null将删除约束。
        参数
        child - vbox的孩子
        value - 孩子的横向成长优先级
      • getVgrow

        public static Priority getVgrow​(Node child)
        如果设置,返回小孩的vgrow属性。
        参数
        child - vbox的子节点
        结果
        该小孩的垂直成长优先级,如果没有设置优先级,则为null
      • setMargin

        public static void setMargin​(Node child,
                                     Insets value)
        设置由vbox包含的小孩的边距。 如果设置,vbox将布局孩子,使其周围具有边缘空间。 将值设置为null将删除约束。
        参数
        child - vbox的子模式
        value - 孩子周围的空间
      • getMargin

        public static Insets getMargin​(Node child)
        如果设置,返回小孩的边距属性。
        参数
        child - vbox的子节点
        结果
        小孩的保证金,如果没有设置保证金,则为null
      • clearConstraints

        public static void clearConstraints​(Node child)
        从子节点中删除所有vbox约束。
        参数
        child - 子节点
      • setSpacing

        public final void setSpacing​(double value)
        设置属性间距的值。
        Property description:
        vbox中每个孩子之间的垂直空间量。
      • getSpacing

        public final double getSpacing​()
        获取属性间距的值。
        Property description:
        vbox中每个孩子之间的垂直空间量。
      • setAlignment

        public final void setAlignment​(Pos value)
        设置属性对齐的值。
        Property description:
        孩子们在vbox的宽度和高度之间的整体对齐。
      • getAlignment

        public final Pos getAlignment​()
        获取属性对齐的值。
        Property description:
        孩子们在vbox的宽度和高度之间的整体对齐。
      • fillWidthProperty

        public final BooleanProperty fillWidthProperty​()
        是否调整大小的小孩将被调整大小以填充vbox的全部宽度或被调整到其首选宽度,并根据 alignment hpos值对齐。
        另请参见:
        isFillWidth()setFillWidth(boolean)
      • setFillWidth

        public final void setFillWidth​(boolean value)
        设置属性fillWidth的值。
        Property description:
        是否调整大小的小孩将被调整大小以填满vbox的全部宽度,或者调整大小至其首选宽度,并根据 alignment hpos值对齐。
      • isFillWidth

        public final boolean isFillWidth​()
        获取属性fillWidth的值。
        Property description:
        是否调整大小的小孩将被调整大小以填满vbox的全部宽度,或者调整大小至其首选宽度,并根据 alignment hpos值对齐。
      • computeMinWidth

        protected double computeMinWidth​(double height)
        描述从类复制: Region
        计算该区域的最小宽度。 默认情况下返回左和右插入的总和。 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有VERTICAL内容偏差,则可以忽略height参数。
        重写:
        computeMinWidthRegion
        参数
        height - 如果最小宽度取决于应该使用的高度
        结果
        计算出该区域的最小宽度
      • computeMinHeight

        protected double computeMinHeight​(double width)
        描述从类复制: Region
        计算该区域的最小高度。 默认返回顶部和底部插入的总和。 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有HORIZONTAL内容偏差,则可以忽略width参数。
        重写:
        computeMinHeightRegion
        参数
        width - 如果最小高度取决于应该使用的宽度
        结果
        计算该区域的最小高度
      • computePrefWidth

        protected double computePrefWidth​(double height)
        描述从类复制: Region
        计算给定高度的该区域的首选宽度。 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有VERTICAL内容偏差,则可以忽略height参数。
        重写:
        computePrefWidthRegion
        参数
        height - 如果首选宽度取决于应该使用的高度
        结果
        计算这个区域的首选宽度
      • computePrefHeight

        protected double computePrefHeight​(double width)
        描述从类复制: Region
        计算给定宽度的该区域的首选高度; 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有HORIZONTAL内容偏差,则可以忽略width参数。
        重写:
        computePrefHeightRegion
        参数
        width - 如果首选的高度取决于应该使用的宽度
        结果
        该区域计算的优选高度
      • requestLayout

        public void requestLayout​()
        描述从类复制: Parent
        请求在渲染下一个场景之前执行布局传递。 这是异步批量发生一次“脉冲”或动画帧。

        如果此父对象是布局根或非托管,则将直接添加到场景的脏布局列表中,否则将调用requestParentLayout。

        重写:
        requestLayoutParent
      • layoutChildren

        protected void layoutChildren​()
        描述从类复制: Parent
        在布局传递过程中调用这个Parent的孩子。 默认情况下,它只会将受管理的可调整大小的内容的大小设置为其首选大小,并且不会执行任何节点定位。

        子类应该根据需要重写此函数以布局内容。

        重写:
        layoutChildrenParent
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        结果
        与此类相关联的CssMetaData可能包括其类的CssMetaData。
        从以下版本开始:
        JavaFX 8.0