JavaFX - 根据 Window 大小将 ScrollPane 值更改为特定数量
JavaFX - Change ScrollPane's vvalue to a specific amount based on Window size
我有一个带有边栏的应用程序,边栏中的其中一项是“设置”选项。侧栏中的这个选项有很多 sub-items,这些项目是设置页面上的不同 header。此页面包含每个设置项目,我正在寻找一种方法来设置此 window 的 ScrollPane 的 vvalue 基于 sub-item 被 selected 以便他们 [=21] =]ed 将位于屏幕的最顶部。
当然,我成功地对 vvalue 进行了硬编码,但是一旦 window 的大小发生变化,它就不再向下滚动到我想要的确切位置。您可以在下面的“设置”页面上看到我的应用程序的图像。根据图像,如果用户 select 子菜单中的 Setting2 选项,我希望 ScrollPane 的 vvalue 更改 Setting2 header 位于屏幕最顶部的位置,无论应用程序的大小 window 是。
可以根据top在content
节点中的位置(posY
)计算赋给vvalue
属性的值,总高度内容 (contentHeight
) 和 ScrollPane.viewport
(viewportHeight
) 的高度:
vvalue = topY / (contentHeight - viewportHeight)
(假设您没有更改 vmax
和 vmin
)
您可能需要多次使用 Node.localToParent
来计算 content
节点坐标中的正确位置;它需要应用于节点本身和每个祖先,直到 content
节点的子节点。
按照@jewelsea 的方法,我解决了我的问题,谢谢!
他的回答是:
能否将右侧的设置对象放入 ListView 中,然后使用 scrollTo(object) 滚动到适当的设置?
我有一个带有边栏的应用程序,边栏中的其中一项是“设置”选项。侧栏中的这个选项有很多 sub-items,这些项目是设置页面上的不同 header。此页面包含每个设置项目,我正在寻找一种方法来设置此 window 的 ScrollPane 的 vvalue 基于 sub-item 被 selected 以便他们 [=21] =]ed 将位于屏幕的最顶部。
当然,我成功地对 vvalue 进行了硬编码,但是一旦 window 的大小发生变化,它就不再向下滚动到我想要的确切位置。您可以在下面的“设置”页面上看到我的应用程序的图像。根据图像,如果用户 select 子菜单中的 Setting2 选项,我希望 ScrollPane 的 vvalue 更改 Setting2 header 位于屏幕最顶部的位置,无论应用程序的大小 window 是。
可以根据top在content
节点中的位置(posY
)计算赋给vvalue
属性的值,总高度内容 (contentHeight
) 和 ScrollPane.viewport
(viewportHeight
) 的高度:
vvalue = topY / (contentHeight - viewportHeight)
(假设您没有更改 vmax
和 vmin
)
您可能需要多次使用 Node.localToParent
来计算 content
节点坐标中的正确位置;它需要应用于节点本身和每个祖先,直到 content
节点的子节点。
按照@jewelsea 的方法,我解决了我的问题,谢谢!
他的回答是:
能否将右侧的设置对象放入 ListView 中,然后使用 scrollTo(object) 滚动到适当的设置?