我有以下代码:
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。如何在调整大小时禁用分隔线位置更改?
SplitPane默认情况下,包含的所有节点的大小都会调整,因此是“漫游分隔符”。
您可以setResizableWithParent用来避免调整左侧的尺寸VBox:
SplitPane.setResizableWithParent(vBox1, false);
Run Code Online (Sandbox Code Playgroud)
调整SplitPane的大小时,将SplitPane中的节点设置为可调整大小。默认情况下,所有节点都是可调整大小的。将值设置为false将阻止调整节点的大小。
如果您不希望VBox调整权限的大小,则还必须为该节点调用此方法。