JavaFX:如果内部有项目,则SplitPane会在调整大小时更改分隔符的位置

Pav*_*l_K 4 java javafx

我有以下代码:

public class JavaFxApplication2 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        SplitPane splitPane=new SplitPane();
        VBox vBox1=new VBox();
        vBox1.setStyle("-fx-background-color: red");
        VBox vBox2=new VBox();
        vBox2.setStyle("-fx-background-color: blue");
        splitPane.getItems().add(vBox1);
        splitPane.getItems().add(vBox2);
        splitPane.getDividers().get(0).setPosition(0);
        Scene scene=new Scene(splitPane, 200, 400);
        stage.setScene(scene);
        stage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我运行应用程序时的输出:
在此处输入图片说明
现在,我调整大小并扩大舞台:
在此处输入图片说明
如您所见,分隔线位置现在不为0。如何在调整大小时禁用分隔线位置更改?

DVa*_*rga 5

SplitPane默认情况下,包含的所有节点的大小都会调整,因此是“漫游分隔符”。

您可以setResizableWithParent用来避免调整左侧的尺寸VBox

SplitPane.setResizableWithParent(vBox1, false);
Run Code Online (Sandbox Code Playgroud)

调整SplitPane的大小时,将SplitPane中的节点设置为可调整大小。默认情况下,所有节点都是可调整大小的。将值设置为false将阻止调整节点的大小。

如果您不希望VBox调整权限的大小,则还必须为该节点调用此方法。