所以,情况是...我在滚动窗格中有一个vbox。我要将hbox添加到vbox中,然后在每次插入后调用vbox.setVvalue(1.0)
。
但是,说有5个hbox,滚动条只能使它最后一个可见的项目是第4个hbox-其中一个hbox位于当前可见的下方(需要向下滚动才能看到)。
我找到了一种解决方案,将滚动面板的vvalue属性绑定到vbox的heightproperty,如下所示:scrollPane.vvalueProperty().bind(vbox.heightProperty())
我假设每次vbox高度更改时(即当一个新的hbox已添加)。
但是,我仍然想提高我的知识,以及为什么第一个(在每次插入后设置滚动窗格的vvalue)不同于绑定属性。谢谢!
答案 0 :(得分:0)
设置新的vvalue
发生在修改VBox
引起的布局通过之前,但是结果在布局通过之前应用。由于视口中显示的顶部y坐标的公式为
top = max(0, vvalue * (contentHeight - viewportHeight))
在布局传递期间,内容的左上角将保持在适当的位置,您会在视口的底部看到旧内容的底部。
要解决此问题,您可以使用{p>
ScrollPane
scrollPane.applyCss();
scrollPane.layout();