[英]JavaFX - Change ScrollPane's vvalue to a specific amount based on Window size
我有一个带有侧边栏的应用程序,侧边栏中的一项是设置选项。 侧栏中的此选项有许多子项,这些项是“设置”页面上的不同标题。 此页面包含每个设置项,我正在寻找一种方法来根据选择的子项设置此窗口的 ScrollPane 的 vvalue,以便他们选择的项将位于屏幕的最顶部。
当然,我已经成功地对 vvalue 进行了硬编码,但是一旦窗口的大小发生变化,它就不再向下滚动到我想要的确切点。 您可以在下方的“设置”页面上看到我的应用程序的图像。 根据图像,如果用户在子菜单中选择 Setting2 选项,我希望 ScrollPane 的 vvalue 更改 Setting2 标题位于屏幕最顶部的位置,无论应用程序窗口的大小如何。
遵循@jewelsea 的方法,我能够解决我的问题,谢谢!
他的回答是:
您能否将右侧的 Settings 对象放入 ListView 并使用 scrollTo(object) 滚动到适当的设置?
您可以根据content
节点中顶部的位置 ( posY
)、内容的总高度 ( contentHeight
) 和ScrollPane.viewport
的高度 ( viewportHeight
) 计算要分配给vvalue
属性的值:
vvalue = topY / (contentHeight - viewportHeight)
(假设您没有更改vmax
和vmin
)
您可能需要多次使用Node.localToParent
来计算content
节点坐标中的正确位置; 它需要应用于节点本身和每个祖先直到content
节点的子节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.