JavaFX如何滚动ScrollPane使节点位于视图端口的中间?

时间:2013-09-03 09:21:30

标签: javafx scrollpane

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

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

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

工作“很好”。内容正在移动,但线路正在向前发展。我在线路为0:00(位置设置为0.25)时开始,当位置为(0.75)24 h时结束。 我也在缩放我的时间轴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 hour 12:00 24:00

2 个答案:

答案 0 :(得分:0)

这条线是否必须在滚动窗格内。为什么不将它叠加在整个滚动窗格上?

或者看到这篇文章关于使用绑定来修复滚动窗格内的节点:Always visible when scrolled anchored Node in Java FX 2.0?

答案 1 :(得分:0)

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

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