Module  javafx.controls
软件包  javafx.scene.control

Class SplitPane

  • All Implemented Interfaces:
    StyleableEventTargetSkinnable


    @DefaultProperty("items")
    public class SplitPane
    extends Control

    具有两个或更多个侧面的控制器,每个侧面由分隔件隔开,可以由用户拖动以给其中一个侧面提供更多的空间,导致另一侧收缩相等的量。

    Nodes可以水平放置在彼此旁边,或垂直堆叠。 这可以通过设置orientationProperty()来控制。

    SplitPane中的分隔符具有以下行为

    • 分隔线不能与另一个分隔线重叠
    • 分隔线不能与节点重叠。
    • 当达到节点的最小大小时,移动到左/顶的分隔线将停止。
    • 当达到节点的最大大小时,移动到右边/底部的分隔线将停止。

    在将它们添加到SplitPane之前,需要在布局容器中放置节点。 如果节点不在布局容器内,则分隔符的最大和最小位置将是内容的最大和最小大小。

    分频器的位置范围为0到1.0(含)。 位置为0会将分频器置于SplitPane的左上角/最上边缘加上节点的最小尺寸。 1.0的位置将分割器放在SplitPane的右下边缘,减去节点的最小尺寸。 分频器位置为0.5将分频器放置在SplitPane的中间。 将分频器位置设置为大于节点的最大大小位置将导致分频器设置在节点的最大大小位置。 将分频器位置设置为小于节点的最小尺寸位置将导致分频器设置在节点的最小尺寸位置。 因此, setDividerPosition(int, double)setDividerPositions(double...)设置的值可能与getDividerPositions()返回的值不同

    如果SplitPane中有两个以上的节点,并且分隔符位置被设置为使得分隔符不能适合节点,则分割器将被SplitPane自动调整。

    例如,我们有三个节点的大小和分隔位置

      Node 1: min 25 max 100
     Node 2: min 100 max 200
     Node 3: min 25 max 50
     divider 1: 0.40
     divider 2: 0.45 

    结果将是节点1的大小将其pref尺寸和分频器1定位为0.40,节点2的大小将是其最小大小和分频器2位置将是最小大小的节点2加分频器1的位置,剩余的空间将给予节点3。

    SplitPane将focusTraversable设置为false。

    例:

       SplitPane sp = new SplitPane(); final StackPane sp1 = new StackPane(); sp1.getItems().add(new Button("Button One")); final StackPane sp2 = new StackPane(); sp2.getItems().add(new Button("Button Two")); final StackPane sp3 = new StackPane(); sp3.getItems().add(new Button("Button Three")); sp.getItems().addAll(sp1, sp2, sp3); sp.setDividerPositions(0.3f, 0.6f, 0.9f);  
    从以下版本开始:
    JavaFX 2.0
    • Property Detail

      • orientation

        public final ObjectProperty<Orientation> orientationProperty
        SplitPane的方向。
        结果
        SplitPane的orientation属性
    • 构造方法详细信息

      • SplitPane

        public SplitPane​()
        创建一个没有内容的新SplitPane。
      • SplitPane

        public SplitPane​(Node... items)
        创建一个新的SplitPane,其中给定的项目设置为在一个或多个分频器之间分割的内容。
        参数
        items - 要放置在SplitPane中的项目。
        从以下版本开始:
        JavaFX 8u40
    • 方法详细信息

      • setResizableWithParent

        public static void setResizableWithParent​(Node node,
                                                  Boolean value)
        在SplitPane调整大小时,将SplitPane中的节点设置为可调整大小。 默认情况下所有节点都可调整大小。 将值设置为false将阻止节点调整大小。
        参数
        node - SplitPane中的一个节点。
        value - 如果节点可调整大小,则为true,如果不可调整大小则为false。
        从以下版本开始:
        JavaFX 2.1
      • isResizableWithParent

        public static Boolean isResizableWithParent​(Node node)
        如果父容器调整大小为false时,如果节点可调整大小,则返回true。
        Default value:
        真正
        参数
        node - SplitPane中的一个节点。
        结果
        如果节点可调整大小,则为true否则为false。
        从以下版本开始:
        JavaFX 2.1
      • setOrientation

        public final void setOrientation​(Orientation value)

        此属性控制如何向用户显示SplitPane。 Orientation.HORIZONTAL将导致两个(或多个)节点相互水平放置,而Orientation.VERTICAL将导致节点垂直堆叠。

        参数
        value - 取向值
      • getOrientation

        public final Orientation getOrientation​()
        SplitPane的方向。
        结果
        SplitPane的方向。
      • orientationProperty

        public final ObjectProperty<Orientation> orientationProperty​()
        SplitPane的方向。
        结果
        SplitPane的orientation属性
      • getItems

        public ObservableList<Node> getItems​()
        返回一个ObservableList,可用于修改SplitPane的内容。 节点放置到此列表中的顺序在SplitPane中将是相同的顺序。
        结果
        此SplitPane中的项目列表。
      • getDividers

        public ObservableList<SplitPane.Divider> getDividers​()
        返回此SplitPane中所有分隔符的不可修改列表。
        结果
        分隔线列表。
      • setDividerPosition

        public void setDividerPosition​(int dividerIndex,
                                       double position)
        以指定的分频器指数设置分频器的位置。
        参数
        dividerIndex - 分频器的索引。
        position - 分频器位置,介于0.0和1.0之间(含)。
      • setDividerPositions

        public void setDividerPositions​(double... positions)
        设置分频器的位置
        参数
        positions - 分频器位置,介于0.0和1.0之间(含)。
      • getDividerPositions

        public double[] getDividerPositions​()
        返回一个包含每个分隔符位置的double数组。
        结果
        一个double数组,包含每个分频器的位置。
      • createDefaultSkin

        protected Skin<?> createDefaultSkin​()
        为此控件创建一个新的默认皮肤实例。 如果没有通过CSS -fx-skin提供皮肤或者在具有setSkin(...)的子类中显式设置,则调用此控件创建皮肤。
        重写:
        createDefaultSkinControl
        结果
        此控件的默认皮肤的新实例。 如果为null,则控件将没有皮肤,除非由css提供。
      • getClassCssMetaData

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

        protected Boolean getInitialFocusTraversable​()
        返回此控件的初始焦点遍历状态,供JavaFX CSS引擎正确设置其初始值。 该方法被覆盖,因为默认情况下UI控件将focus遍历设置为true,但这不适用于此控件。
        重写:
        getInitialFocusTraversableControl
        结果
        该控件的初始聚焦可移动状态
        从以下版本开始:
        9