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

Class HBox

  • All Implemented Interfaces:
    StyleableEventTarget


    public class HBox
    extends Pane
    HBox将孩子放在一排水平排列中。 如果hbox有一个边框和/或填充集合,那么这些内容将被放置在这些插入内。

    HBox示例:

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

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

    无论孩子的可见财产价值如何,HBox都会列出每个被管理的孩子; 非托管儿童被忽视。

    可调整范围

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

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

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

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

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

    HBox在默认情况下不剪切其内容,因此如果孩子的最小大小阻止其在hbox中的适合,儿童的边界可能会延伸到自己的界限之外。

    可选布局限制

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

    HBox Constraint Table Constraint Type Description hgrow javafx.scene.layout.Priority The horizontal grow priority for the child. margin javafx.geometry.Insets Margin space around the outside of the child.

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

       HBox hbox = new HBox(); TextField field = new TextField(); HBox.setHgrow(field, Priority.ALWAYS); hbox.getChildren().addAll(new Label("Search:"), field, new Button("Go"));  
    如果多个孩子具有相同的成长优先级设置,那么hbox将为每个孩子分配等量的空间。 HBox只能使一个孩子达到最大宽度,所以如果孩子的最大宽度不是Double.MAX_VALUE,应用程序可能需要重写max才能使其增长。 例如:
       HBox hbox = new HBox(); Button button1 = new Button("Add"); Button button2 = new Button("Remove"); HBox.setHgrow(button1, Priority.ALWAYS); HBox.setHgrow(button2, Priority.ALWAYS); button1.setMaxWidth(Double.MAX_VALUE); button2.setMaxWidth(Double.MAX_VALUE); hbox.getChildren().addAll(button1, button2);  
    从以下版本开始:
    JavaFX 2.0
    • Property Detail

      • fillHeight

        public final BooleanProperty fillHeightProperty
        是否调整大小的小孩将被调整大小以填补hbox的全部高度,或者调整大小到其首选高度,并根据alignment vpos值对齐。 请注意,如果hbox垂直对齐方式设置为“基线”,则此属性将被忽略,并且子项将被调整为其首选高度。
        另请参见:
        isFillHeight()setFillHeight(boolean)
    • 构造方法详细信息

      • HBox

        public HBox​()
        创建一个间距= 0的HBox布局。
      • HBox

        public HBox​(double spacing)
        创建一个具有指定间隔的HBox布局。
        参数
        spacing - 每个孩子之间的水平空间量
      • HBox

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

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

      • setHgrow

        public static void setHgrow​(Node child,
                                    Priority value)
        设置由hbox包含的小孩的横向增长优先级。 如果设置,如果hbox被调整大于其首选宽度,则hbox将使用优先级来分配额外的空间。 如果多个hbox儿童具有相同的横向增长优先级,那么它们之间的间隔时间将会相同。 如果孩子没有设置水平增长优先级,则hbox将永远不会为其分配额外的水平空间(如果可用)。 将值设置为null将删除约束。
        参数
        child - 一个hbox的孩子
        value - 小孩的横向成长优先级
      • getHgrow

        public static Priority getHgrow​(Node child)
        如果设置,返回小孩的hgrow约束。
        参数
        child - hbox的子节点
        结果
        子级的水平增长优先级,如果没有设置优先级,则为null
      • setMargin

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

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

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

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

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

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

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

        public final BooleanProperty fillHeightProperty​()
        是否调整大小的小孩将被调整大小以填充hbox的全部高度,或者调整大小至其首选高度,并根据alignment vpos值对齐。 请注意,如果hbox垂直对齐方式设置为“基线”,则此属性将被忽略,并且子项将被调整为其首选高度。
        另请参见:
        isFillHeight()setFillHeight(boolean)
      • setFillHeight

        public final void setFillHeight​(boolean value)
        设置属性fillHeight的值。
        Property description:
        无论是否可调整大小的孩子将被调整,以填补横向盒的整个高度或根据被调整到其首选高度和排列alignment VPOS值。 请注意,如果hbox垂直对齐方式设置为“基线”,则此属性将被忽略,并且子项将被调整为其首选高度。
      • isFillHeight

        public final boolean isFillHeight​()
        获取属性fillHeight的值。
        Property description:
        无论是否可调整大小的孩子将被调整,以填补横向盒的整个高度或根据被调整到其首选高度和排列alignment VPOS值。 请注意,如果hbox垂直对齐方式设置为“基线”,则此属性将被忽略,并且子项将被调整为其首选高度。
      • 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
      • getBaselineOffset

        public double getBaselineOffset​()
        描述从类复制: Parent
        基于第一个受管理的子节点计算基线偏移量。 如果没有这样的孩子,返回Node.getBaselineOffset()
        重写:
        getBaselineOffsetParent
        结果
        基线偏移
      • layoutChildren

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

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

        重写:
        layoutChildrenParent
      • getClassCssMetaData

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