JavaFX - 如何在单击按钮时以编程方式滚动滚动窗格?



我想知道是否有任何"简单"的方法可以将垂直滚动条设置为在按下按钮时"滚动"特定量,或者在任何事件上。

例如,我有一个具有侧边栏的应用程序,侧边栏上的选项之一是"设置"。设置有子项,我想添加功能以单击其中一个子项,它将打开"设置"页面并自动向下滚动到该子项所在的页面上的特定点。

以编程方式垂直滚动ScrollPane只需操作vvalue属性即可。下面是该属性的文档:

滚动

窗格的当前垂直滚动位置。应用程序可以设置此值以编程方式滚动视图。每当用户滚动或平移视区时,滚动窗格都会更新此值。此值必须始终在vminvmax的范围内。当vvalue等于vmin时,包含的节点被定位,使其布局边界minY可见。当vvalue等于vmax时,包含的节点被定位,使其布局边界maxY可见。当vvalue介于vminvmax之间时,包含的节点按比例放置在 layoutBoundsminY和 layoutBoundsmaxY之间。

看看这个解决方案:

Bounds bounds = pane.getViewportBounds();
pane.setVvalue(box.getChildren().get(x).getLayoutY() * 
(1/(box.getHeight()-bounds.getHeight())));

pane是滚动窗格。box是保存要滚动到的节点的窗格。x将滚动到子节点。

最新更新