6

我必须创建显示当前时间的时间线。我正在使用 AnchorPane,并在 ScrollPane 中添加了行。我需要模拟 1 天,滚动窗格宽度为(2880px,每 60px 为一小时)。我的限制是(前一天 12 小时,第二天 12 小时)。移动我的线路工作正常。

我需要做的就是在视口中间设置线条并在其下移动内容。对于移动线,我使用这种方法:

scrollPane.setHvalue( line.getStartX() - anchorPane.width); 

它工作“有点好”。内容在移动,但线路在移动。我从 0:00 开始(位置设置为 0.25),当位置为(0.75)24 小时时结束。我也在缩放我的时间轴 Y 所以

/* where line position is calculate by scale, scale is x2, x3, x4.... */
scrollPane.setHvalue( line.getStartX() - anchorPane.width * scale); 

时间请看imgs: 0:00, 12:00, 24:00...正确的线位置只在12:00... 如何修改函数来设置线的位置?

0:00 小时 12:00 24:00

4

3 回答 3

0

我不知道我是否完全理解你的问题。在我看来,您有一个滚动窗格,上面有一个绿线节点,不是吗?如果是这样 ...

如果绿线是一个节点,也许您可​​以为滚动窗格的显示值注册一个事件处理程序(hvalue,我相信)。例如,每次修改滚动窗格的滚动值时,都要更新绿线节点的平移位置。我不是布局专家。JavaFX 对我来说还是个新手。但据我所知,似乎可以做到。理论上,这显然是可以做到的。

于 2014-01-16T03:53:35.430 回答
0

该行必须在滚动窗格内是否有原因。为什么不把它覆盖在整个滚动窗格上呢?

或查看这篇关于使用绑定修复滚动窗格内的节点的文章:在 Java FX 2.0 中滚动锚定节点时始终可见?

于 2013-12-04T19:32:42.653 回答
0

这个公式对我有用,可以让我的对象在滚动窗格中居中:

scrollPane.setHvalue(line.getX() - scrollPane.getWidth() / 2) / (anchorPane.getWidth() - scrollPane.getWidth()));
于 2022-03-03T16:20:46.837 回答