ScrollPane javafx自动滚动(将vvalue设置为1.0)仅滚动到最后一个之前的项目

时间:2018-08-10 22:24:50

标签: java javafx autoscroll scrollpane

所以,情况是...我在滚动窗格中有一个vbox。我要将hbox添加到vbox中,然后在每次插入后调用vbox.setVvalue(1.0)

但是,说有5个hbox,滚动条只能使它最后一个可见的项目是第4个hbox-其中一个hbox位于当前可见的下方(需要向下滚动才能看到)。

我找到了一种解决方案,将滚动面板的vvalue属性绑定到vbox的heightproperty,如下所示:scrollPane.vvalueProperty().bind(vbox.heightProperty())我假设每次vbox高度更改时(即当一个新的hbox已添加)。

但是,我仍然想提高我的知识,以及为什么第一个(在每次插入后设置滚动窗格的vvalue)不同于绑定属性。谢谢!

1 个答案:

答案 0 :(得分:0)

设置新的vvalue发生在修改VBox引起的布局通过之前,但是结果在布局通过之前应用。由于视口中显示的顶部y坐标的公式为

top = max(0, vvalue * (contentHeight - viewportHeight))

在布局传递期间,内容的左上角将保持在适当的位置,您会在视口的底部看到旧内容的底部。

要解决此问题,您可以使用{p>

ScrollPane

示例

scrollPane.applyCss();
scrollPane.layout();