是否可以通过编程方式将ScrollPane
滚动到给定位置?
ScrollPane#vvalue
和ScrollPane#hvalue
没用,因为它们从0到1不等。是否有绝对属性或我应该自己编写代码?
答案 0 :(得分:3)
这些属性并非无用,您只需要知道如何正确使用它们。 (没有方法允许您直接指定绝对值。)
假设ScrollBar
可见,您知道以下等式
topLeft / (contentSize - viewportSize) = scrollValue / scrollMax
这可以重新表述为
scrollValue = (topLeft * scrollMax) / (contentSize - viewportSize)
= topLeft / (contentSize - viewportSize)
hvalue = topLeftX / (contentWidth - viewportWidth)
vvalue = topLeftY / (contentHeight - viewportHeight)
其中topLeftX
和topLeftY
是视口左上角像素的x和y坐标。使用viewportBounds
确定视口的大小。
答案 1 :(得分:1)
如果您的意思是移动滚动窗格一定数量的像素,那么请获取图片大小并计算您需要使用hvalue
或vvalue
移动多少。
int pixelsH = 45;
int change = pixelsH/scrollpane.getWidth();
scrollpane.setHvalue(scrollpane.getHValue() + change);
垂直变化的概念相同。
答案 2 :(得分:0)
使用setHvalue
和setVvalue
定位您的scrollPane。
可以根据Nodes
例如:
double nodeX = dummyNode.getBoundsInParent().getMaxX();
double nodeY = dummyNode.getBoundsInParent().getMaxY();
double scrollPaneWidth = dummyScrollPane.getContent().getBoundsInLocal().getWidth()
double scrollPaneHeight = dummyScrollPane.getContent().getBoundsInLocal().getHeight()
dummyScrollPane.setVvalue(nodeY/height);
dummyScrollPane.setHvalue(nodeX/width);