问题
我正试图找出一种方法来获取内容节点中的哪个位置滚动窗格的视口居中。
详细说明上图,大矩形是内容(比如大图像),小矩形是滚动窗格显示的部分。我正在尝试找到x和y,它们是内容左上角的坐标。
我尝试过什么
我的第一个想法是使用滚动窗格的getViewportBounds()
方法并使用其minX
和maxX
属性来确定中心x点:
Bounds b = scrollPane.getViewportBounds();
double centerX = (b.getMinX() + b.getMaxX()) / 2;
double centerY = (b.getMinY() + b.getMaxY()) / 2;
然而,这不起作用,因为这些数字否定并且似乎无法准确描述 x 和 y I'我正在寻找。
我的下一个想法是使用滚动窗格的hValue
和vValue
来获取视口相对于内容的左上角:
Bounds b = scrollPane.getViewportBounds();
double centerX = scrollPane.getHvalue() + b.getWidth() / 2;
double centerY = scrollPane.getVvalue() + b.getHeight() / 2;
这不起作用,因为hValue
和vValue
似乎太大了(当只滚动几个像素时,我得到像1600这样的数字)。
我的问题
我似乎对视口如何使用滚动窗格有一个基本的误解。
我在这里做错了什么?有人可以解释这些数字来自哪里?如何在上图中找到 x 和 y ?
答案 0 :(得分:1)
让Loader
成为视口中显示的顶部左侧点的坐标。您可以将其写为
(x, y)
这意味着假设((contentWidth - viewportWidth) * hValueRel, (contentHeight - viewportHeight) * vValueRel)
vValueRel = vValue / vMax
hValueRel = hValue / hMax
和hmin
保持vmin
,您可以像这样在中心保留一个圆圈:
0