【问题标题】:JavaFX: SplitPane changes divider position on resize if there are items insideJavaFX:如果里面有项目,SplitPane 会在调整大小时更改分隔符位置
【发布时间】:2017-01-23 18:24:25
【问题描述】:

我有以下代码:

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();
    }
}

这是我运行应用程序时的输出:

现在我调整大小并使舞台更大:

如您所见,分隔线位置现在不是 0。如何在调整大小时禁用分隔线位置更改?

【问题讨论】:

    标签: java javafx


    【解决方案1】:

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

    您可以使用setResizableWithParent 来避免调整左侧VBox 的大小:

    SplitPane.setResizableWithParent(vBox1, false);
    

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

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

    【讨论】:

    • 感谢您的回答。但我确实希望 vbox 可以调整大小。我不希望分隔位置改变它的值。看,当我运行应用程序时,两个 vbox 都可以调整大小,但分隔符位置是 0。
    • VBoxes 保持可调整大小,只是在调整拆分窗格本身大小时不会自动调整大小(分隔线不会移动)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 2018-08-19
    • 2014-02-20
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多