Я пытаюсь вычислить координаты сцены от дочернего элемента внутри ScrollPane
. Мы сделали это на нескольких других узлах в нашем проекте с помощью этого метода.
this.boundsInLocalProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( newValue );
..
} );
Это действительно просто, но как я могу вычислить координаты дочерних элементов в ScrollPane
, даже если конкретный узел в настоящее время находится за пределами представления? Наша структура FXML выглядит так
<ScrollPane>
<VBox>
<Pane/>
<Pane/>
<Pane/>
</VBox>
</ScrollPane>
Я искал какое-то время в Интернете, но я не могу понять, с чего мне начать. Может быть, кто-то может направить меня в правильном направлении?
Изменить: благодаря комментарий от James_D Я понял, чего не хватает. В ScrollPane
прослушиватель boundsInLocalProperty
не будет вызываться во время прокрутки, поэтому мне пришлось добавить
this.localToSceneTransformProperty().addListener( ( observable, oldValue, newValue ) ->
{
final Bounds boundsOnScene = this.localToScene( this.getBoundsInLocal() );
...
} );
учитывать поведение прокрутки.
boundsInLocal
не изменится при прокрутке пользователем, поэтому прослушиватель не будет вызываться, и вы не будете пересчитывать границы сцены. Попробуйте добавить слушателя вlocalToSceneTransformProperty
- person James_D   schedule 08.11.2017