【发布时间】:2013-09-03 09:21:30
【问题描述】:
我必须创建带有显示当前时间的线的时间线。我正在使用 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);
请查看以下时间的图片:0:00、12:00、24:00... 正确的线位置只在12:00...如何修改函数来设置线的位置?
【问题讨论】:
-
简而言之,绿线代表当前时间,您希望它始终保持在滚动窗格中间的相同位置,而时间线图从右向左流动。对吗?
-
是的,正是...我只是想让这个面板在绿线下移动。 (顶轴与它绑定)
-
基本观察是(hValue-hMin)/(hMax-hMin) = x / (contentWidth - viewportWidth),其中x是视口左边缘到左边缘的水平偏移量的内容。然后你有 centerX = x + viewportWidth/2 => 来自 JamesD 对How may I zoom a Node centered in a ScrollPane? 的回答。
标签: javafx scrollpane