0

调整窗口大小后,SplitPane 的分隔符根据给定的百分比移动到另一个位置(例如:dividerPositions="0.05")。

但我希望它在调整大小后保持在相同的位置(就像它绑定到像素大小而不是百分比)之前设置的位置。在调整其父窗格的大小时,我不希望它“移动”(遵循百分比约束)。

有可能以某种方式做到这一点吗?(我想最好从代码中解决这个问题,CSS 解决方案对我来说是次要的)

对我来说完美的解决方案类似于:

<SplitPane orientation="VERTICAL" dividerPositionFromTop="100px" 
           AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" 
           AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" > 
... 
</SplitPane>

遗憾的是,据我所知,dividerPositionFromTop 并不存在。

4

1 回答 1

1

heightProperty您可以添加一个监听器SplitPane并重新计算百分比值:

SplitPane splitPane = new SplitPane();

splitPane.heightProperty().addListener(new ChangeListener<Number>() {
    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
        double height = splitPane.getHeight();
        double dividerPositionFromTop = 100;
        splitPane.setDividerPosition(0, dividerPositionFromTop/height);
    }
});
splitPane.getItems().addAll(new TextArea("1"), new TextArea("2"));
splitPane.setOrientation(Orientation.VERTICAL);
于 2016-12-29T11:10:19.170 回答