JavaFX Borderpane与Splitpane组合

JavaFX Borderpane与Splitpane组合,java,javafx,Java,Javafx,我对JavaFX非常陌生。 对于一个学校项目,我必须创建一个JavaFX应用程序,它有三个扇区(左、中、下),通过拖动分隔线可以调整大小 为了创建这个布局,我尝试使用一个边界窗格(用于部分),并将其与一个拆分窗格组合以使其可调整大小。但我不知道如何组合它。 这是可能的还是我需要另一个窗格对象 BorderPane root = new BorderPane(); SplitPane splitPane = new SplitPane(); ScrollPane leftPane = new Sc

我对JavaFX非常陌生。 对于一个学校项目,我必须创建一个JavaFX应用程序,它有三个扇区(左、中、下),通过拖动分隔线可以调整大小

为了创建这个布局,我尝试使用一个边界窗格(用于部分),并将其与一个拆分窗格组合以使其可调整大小。但我不知道如何组合它。 这是可能的还是我需要另一个窗格对象

BorderPane root = new BorderPane();
SplitPane splitPane = new SplitPane();
ScrollPane leftPane = new ScrollPane(new Button("Button 1"));
ScrollPane bottomPane = new ScrollPane(new Button("Button 2"));
FlowPane centerPane = new FlowPane(new Button("Button 3"));

//splitPane.getItems().addAll(leftPane, centerPane, bottomPane);
//root.getChildren().add(splitPane);
root.setLeft(leftPane);
root.setCenter(centerPane);
root.setBottom(bottomPane);

只需使用两个方向不同的
拆分窗格
(忘记
边框窗格
):

package org.example;
导入javafx.application.application;
导入javafx.geometry.Orientation;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.control.ScrollPane;
导入javafx.scene.control.SplitPane;
导入javafx.scene.layout.FlowPane;
导入javafx.stage.stage;
公共类SplitPanesExampleApp扩展应用程序{
@凌驾
公众假期开始(阶段){
//创建控件:
ScrollPane leftPane=新建滚动窗格(新建按钮(“左”)),
底部窗格=新滚动窗格(新按钮(“底部”));
FlowPane中心窗格=新建FlowPane(新建按钮(“中间(或右侧)”);
拆分窗格水平拆分窗格=新拆分窗格(左窗格、中心窗格),
垂直拆分窗格=新拆分窗格(水平拆分窗格、底部窗格);
//设置方向:
verticalSplitPane.setOrientation(方向.垂直);
//horizontalSplitPane.setOrientation(Orientation.HORIZONTAL);//HORIZONTAL是默认值
//设置初始分隔器位置:
verticalSplitPane.getDividers().get(0.setPosition(.8);
horizontalSplitPane.getDividers().get(0.setPosition(.2);
//准备并展示舞台:
舞台场景(新场景(垂直分割窗格,600400));
stage.show();
}
公共静态void main(字符串[]args){
发射();
}
}

只需使用两个方向不同的
拆分窗格(忘记
边框窗格
):

package org.example;
导入javafx.application.application;
导入javafx.geometry.Orientation;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.control.ScrollPane;
导入javafx.scene.control.SplitPane;
导入javafx.scene.layout.FlowPane;
导入javafx.stage.stage;
公共类SplitPanesExampleApp扩展应用程序{
@凌驾
公众假期开始(阶段){
//创建控件:
ScrollPane leftPane=新建滚动窗格(新建按钮(“左”)),
底部窗格=新滚动窗格(新按钮(“底部”));
FlowPane中心窗格=新建FlowPane(新建按钮(“中间(或右侧)”);
拆分窗格水平拆分窗格=新拆分窗格(左窗格、中心窗格),
垂直拆分窗格=新拆分窗格(水平拆分窗格、底部窗格);
//设置方向:
verticalSplitPane.setOrientation(方向.垂直);
//horizontalSplitPane.setOrientation(Orientation.HORIZONTAL);//HORIZONTAL是默认值
//设置初始分隔器位置:
verticalSplitPane.getDividers().get(0.setPosition(.8);
horizontalSplitPane.getDividers().get(0.setPosition(.2);
//准备并展示舞台:
舞台场景(新场景(垂直分割窗格,600400));
stage.show();
}
公共静态void main(字符串[]args){
发射();
}
}

WOW!谢谢你,这正是我要找的。是否可以将元素的宽度和高度设置为大小,而不是设置分隔器的位置?很好。使用
setPrefWidth
setPrefHeight
分隔器位置的值将保持其默认值(0,5)。如果设置e,它们将改变。G中心窗格的最小宽度或高度,但这将限制用户调整大小的能力。我认为最好使用除法器
setPosition
method.WOW!谢谢你,这正是我要找的。是否可以将元素的宽度和高度设置为大小,而不是设置分隔器的位置?很好。使用
setPrefWidth
setPrefHeight
分隔器位置的值将保持其默认值(0,5)。如果设置e,它们将改变。G中心窗格的最小宽度或高度,但这将限制用户调整大小的能力。我认为最好使用除法器
setPosition
方法。