调整大小后布局未正确更新

时间:2017-11-13 16:11:25

标签: java javafx layout

由于ScrollPane不允许例如排名靠前ScrollBar(以及其他一些原因),我需要创建自己的ScrollBar,我可以根据自己的需要定位。可悲的是 - 很少有问题主要来自最大化和最小化屏幕(阶段)。

class SectionLeft extends HBox
{
    SectionLeft()
    {
        ScrollPane pane = new ScrollPane();
        pane.setFitToWidth(true);
        HBox.setHgrow(pane, Priority.ALWAYS);

        VBox content = new VBox(10);
        pane.setContent(content);

        pane.setHbarPolicy(ScrollBarPolicy.NEVER); // hide normal bars.
        pane.setVbarPolicy(ScrollBarPolicy.NEVER);

        ScrollBar sb = new ScrollBar();
        sb.setOrientation(Orientation.VERTICAL);
        sb.minProperty().bind(pane.vminProperty());
        sb.maxProperty().bind(pane.vmaxProperty());
        sb.visibleAmountProperty().bind(pane.heightProperty().divide(content.heightProperty()));
        sb.managedProperty().bind(sb.visibleAmountProperty().lessThan(1.0));
        sb.visibleProperty().bind(sb.managedProperty());
        sb.valueProperty().bindBidirectional(pane.vvalueProperty());

        this.getChildren().addAll(pane, sb);
    }
}

基本上我们这里有一个HBox有2个孩子 - 左边是ScrollPane,右边是ScrollBar,窗格会展开到父框,只会出现条形图(当内容超出窗格的高度时,在框中进行管理。

现在 - 一切正常,条形图出现并按照我调整内容的大小,但是 - 当我想做类似的事情时:

在小窗口中启动程序(内容适合,不需要栏) - >调整内容大小(内容超出小窗口,栏显示) - >最大化窗口(因为我们有更多的高度,内容再次适合,但是 - 棒不会真的消失,或者更确切地说 - 不会根据需要更新) - 看图像。

其他情况:

启动程序 - > maximalize - >调整内容大小以使其适合窗格,但如果我将窗口缩小,则不会 - > - >最小化 - >滚动条会出现,但它会被放置不明确(因为布局是在条形码managedProperty()获得父级应该管理它的更新之前运行的。)

enter image description here

所以基本上 - 当最大化窗口时," managedProperty()"运行得太晚,布局无法获得正确的值,然后导致(现在不受管理)ScrollBar保持布局(但变得不可见,留空空间)。

我该如何解决这个问题?

0 个答案:

没有答案