JavaFX-在滚动窗格中获取子对象的场景坐标
我正试图从JavaFX-在滚动窗格中获取子对象的场景坐标,java,javafx,scrollpane,Java,Javafx,Scrollpane,我正试图从滚动窗格中的子对象计算场景坐标。我们使用此方法在项目中的其他几个节点上执行此操作 this.boundsInLocalProperty().addListener( ( observable, oldValue, newValue ) -> { final Bounds boundsOnScene = this.localToScene( newValue ); .. } ); 这确实很简单,但即使特定节点当前超出视图边界,如何计算滚动窗格中子节点的坐标呢?
滚动窗格
中的子对象计算场景坐标。我们使用此方法在项目中的其他几个节点上执行此操作
this.boundsInLocalProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( newValue );
..
} );
这确实很简单,但即使特定节点当前超出视图边界,如何计算滚动窗格中子节点的坐标呢?我们的FXML结构如下所示
我已经在互联网上搜索了一段时间,但我不知道从哪里开始。也许有人能指引我正确的方向
编辑:多亏了詹姆斯的帮助,我找到了遗漏的内容。在滚动窗格中
滚动期间将不会调用boundsInLocalProperty
侦听器,因此我必须添加
this.localToSceneTransformProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( this.getBoundsInLocal() );
...
} );
将滚动行为考虑在内 多亏了你,我才知道出了什么问题
当用户滚动时,boundsInLocal
不会更改。我还需要听一下localToSceneTransformProperty
来重新计算场景边界。多亏了我找出了问题所在
当用户滚动时,boundsInLocal
不会更改。我还需要侦听LocalToScenetTransformProperty
以重新计算场景边界。您的计算看起来正确,但当用户滚动时,boundsInLocal
不会更改,因此不会调用侦听器,您也不会重新计算场景边界。请尝试将侦听器添加到LocalToScenetTransformProperty
Omg,谢谢。昨天我花了几乎一整天的时间来思考如何绑定到scroll事件以重新计算边界。我想我得自己减去偏移量。我没想到事情会这么简单。有时你看不到树的森林。偶然发现这个老问题,也许你可以添加你的评论作为答案,这样我就可以接受了?你的计算看起来不错,但是当用户滚动时,boundsInLocal
不会改变,所以监听器不会被调用,你也不会重新计算场景边界。请尝试将侦听器添加到LocalToScenetTransformProperty
Omg,谢谢。昨天我花了几乎一整天的时间来思考如何绑定到scroll事件以重新计算边界。我想我得自己减去偏移量。我没想到事情会这么简单。有时你看不见森林,也看不见树木。偶然发现这个老问题,也许你可以添加你的评论作为答案,这样我就可以接受了?