我正在尝试计算ScrollPane
内儿童的场景坐标。我们使用此方法在项目中的其他几个节点上执行此操作
this.boundsInLocalProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( newValue );
..
} );
这非常简单,但即使特定节点当前超出视图范围,如何计算ScrollPane
中子节点的坐标?我们的FXML结构看起来像这样
<ScrollPane>
<VBox>
<Pane/>
<Pane/>
<Pane/>
</VBox>
</ScrollPane>
我现在在互联网上搜索了一段时间,但我无法弄清楚应该从哪里开始。也许有人可以指导我朝正确的方向发展?
编辑:感谢James_D的comment我弄清楚了什么。在ScrollPane
中,在滚动期间不会调用boundsInLocalProperty
侦听器,因此我必须添加
this.localToSceneTransformProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( this.getBoundsInLocal() );
...
} );
考虑滚动行为。
答案 0 :(得分:0)
感谢James_D,我知道出了什么问题。
用户滚动时,boundsInLocal
不会改变。我还需要听localToSceneTransformProperty
重新计算场景范围。