繁体   English   中英

JavaFX - 根据窗口大小将 ScrollPane 的 vvalue 更改为特定数量

[英]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)

(假设您没有更改vmaxvmin

您可能需要多次使用Node.localToParent来计算content节点坐标中的正确位置; 它需要应用于节点本身和每个祖先直到content节点的子节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM