由于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()
获得父级应该管理它的更新之前运行的。)
所以基本上 - 当最大化窗口时," managedProperty()"运行得太晚,布局无法获得正确的值,然后导致(现在不受管理)ScrollBar保持布局(但变得不可见,留空空间)。
我该如何解决这个问题?