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

Class StackPane

  • All Implemented Interfaces:
    StyleableEventTarget
    已知直接子类:
    TableHeaderRow


    public class StackPane
    extends Pane
    StackPane将它的孩子放在一个靠前的堆叠中。

    孩子的z顺序由孩子列表的顺序定义,第0个孩子是顶部的最后一个孩子。 如果设置了一个边框和/或填充,孩子们将被放在这些插图中。

    stackpane将尝试调整每个孩子的大小以填补其内容区域。 如果孩子的大小不能填满stackpane(或者是因为它不能调整大小或者阻止它的最大大小),那么它将使用对齐属性对齐,该对齐属性默认为Pos.CENTER。

    StackPane示例:

       StackPane stack = new StackPane(); stack.getChildren().addAll(new Rectangle(100,100,Color.BLUE), new Label("Go!));  

    无论孩子的可见属性值如何,StackPane都会放置每个被管理的小孩; 非托管儿童被忽视。

    StackPane可能使用CSS来设计背景和边框。 详见Region

    可调整范围

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

    StackPane Resize Table width height minimum left/right insets plus the largest of the children's min widths. top/bottom insets plus the largest of the children's min heights. preferred left/right insets plus the largest of the children's pref widths. top/bottom insets plus the largest of the children's pref heights. maximum Double.MAX_VALUE Double.MAX_VALUE

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

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

       // ensure stackpane is never resized beyond it's preferred size stackpane.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);  
    应用程序可以通过将这些属性设置回USE_COMPUTED_SIZE来恢复计算值。

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

    可选布局限制

    应用程序可以设置对各个孩子的约束,以自定义StackPane的布局。 对于每个约束,StackPane提供了一个静态方法来设置它在孩子上。

    StackPane Constraint Table Constraint Type Description alignment javafx.geometry.Pos The alignment of the child within the stackpane. margin javafx.geometry.Insets Margin space around the outside of the child.

    例子:

       // Align the title Label at the bottom-center of the stackpane Label title = new Label(); StackPane.setAlignment(title, Pos.BOTTOM_CENTER); stackpane.getChildren.addAll(new ImageView(...), title); // Create an 8 pixel margin around a listview in the stackpane ListView list = new ListView(); StackPane.setMargin(list, new Insets(8,8,8,8); stackpane.getChildren().add(list);  
    从以下版本开始:
    JavaFX 2.0
    • Property Detail

      • alignment

        public final ObjectProperty<Pos> alignmentProperty
        在stackpane的宽度和高度内的子项的默认对齐方式。 这可以通过设置孩子的对齐约束来覆盖个别孩子。
        另请参见:
        getAlignment()setAlignment(Pos)
    • 构造方法详细信息

      • StackPane

        public StackPane​()
        使用默认CENTER对齐方式创建StackPane布局。
      • StackPane

        public StackPane​(Node... children)
        使用默认CENTER对齐方式创建StackPane布局。
        参数
        children - 此窗格的初始子项集。
        从以下版本开始:
        JavaFX 8.0
    • 方法详细信息

      • setAlignment

        public static void setAlignment​(Node child,
                                        Pos value)
        设置子堆栈的对齐方式。 如果设置,将覆盖stackpane的默认对齐方式。 将值设置为null将删除约束。
        参数
        child - child的子节点
        value - 孩子的对齐位置
      • getAlignment

        public static Pos getAlignment​(Node child)
        如果设置,返回小孩的对齐约束。
        参数
        child - child的子节点
        结果
        小孩的对齐位置,如果没有设置对齐,则为空
      • setMargin

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

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

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

        public final ObjectProperty<Pos> alignmentProperty​()
        在stackpane的宽度和高度内的子项的默认对齐方式。 这可以通过设置孩子的对齐约束来覆盖个别孩子。
        另请参见:
        getAlignment()setAlignment(Pos)
      • setAlignment

        public final void setAlignment​(Pos value)
        设置属性对齐的值。
        Property description:
        在stackpane的宽度和高度内的子项的默认对齐方式。 这可以通过设置孩子的对齐约束来覆盖个别孩子。
      • getAlignment

        public final Pos getAlignment​()
        获取属性对齐的值。
        Property description:
        在stackpane的宽度和高度内的子项的默认对齐方式。 这可以通过设置孩子的对齐约束来覆盖个别孩子。
      • 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