JavaFX - 在ScrollPane中获取子项的场景坐标

时间:2017-11-08 09:53:18

标签: java javafx scrollpane

我正在尝试计算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() );
     ...
} );

考虑滚动行为。

1 个答案:

答案 0 :(得分:0)

感谢James_D,我知道出了什么问题。

用户滚动时,boundsInLocal不会改变。我还需要听localToSceneTransformProperty重新计算场景范围。