JavaFX - Измените значение ScrollPane на заданное значение c в зависимости от размера окна. - PullRequest
0 голосов
/ 07 января 2020

У меня есть приложение, у которого есть боковая панель, и один из элементов на боковой панели - это опция «Настройки». Эта опция в боковой панели имеет много подпунктов, которые являются разными заголовками на странице настроек. Эта страница содержит каждый элемент настроек, и я ищу способ установить значение ScrollPane этого окна на основе того, какой подпункт был выбран, чтобы выбранный элемент находился в самой верхней части экрана.

Конечно, я успешно справился с жестким кодированием значения vvalue, но как только размер окна изменяется, он больше не прокручивается до той точки, в которой я хочу его видеть. Ниже вы можете увидеть изображение моего приложения на странице настроек. Исходя из изображения, если пользователь выберет параметр Setting2 в подменю, я бы хотел, чтобы значение ScrollPane изменялось в том месте, где заголовок Setting2 находился в самой верхней части экрана, независимо от размера окна приложения.

enter image description here

Ответы [ 2 ]

1 голос
/ 14 января 2020

Следуя подходу @jewelsea, я смог решить мою проблему, спасибо!

Его ответ был:

Не могли бы вы поместить объекты настроек справа в ListView и использовать scrollTo (объект) для прокрутки до соответствующей настройки?

0 голосов
/ 08 января 2020

Вы можете вычислить значение, которое нужно присвоить свойству vvalue, на основе положения вершины в узле content (posY), общей высоты содержимого (contentHeight) и высоты ScrollPane.viewport (viewportHeight):

vvalue = topY / (contentHeight - viewportHeight)

(предполагается, что вы не изменились vmax и vmin)

Возможно, вам понадобится Node.localToParent несколько раз для вычисления правильного положения в координатах узла content; Его необходимо применить к самому узлу и каждому предку вплоть до потомка узла content.

...