【发布时间】:2017-04-24 08:04:08
【问题描述】:
我需要移动轴中所有刻度线的标签 (Text),以使文本正好位于其自己的刻度线和下一个刻度线的中间。
我在 X 轴上使用 Roland 的 GanttChart 控件(经过一些修改)和 Christian Schudt 的 DateAxis。我的目标是根据日期值绘制甘特图(忽略时间;所有时间值都被截断)。
我的甘特图对每一个任务都有一个“开始日期”和一个“结束日期”(即在图表上它由一个条形表示)。
考虑一下:
我有一个任务从 2 月 1 日开始,并在同一天(2 月 1 日)结束。我有两种方法可以在图表上呈现它:
- 从 2 月 1 日开始渲染,到 2 月 1 日结束。这个栏实际上是隐藏的,因为它的宽度为 0。
- 从 2 月 1 日开始渲染,栏的右边缘触摸 2 月 2 日。这可能会使用户感到困惑,因为它看起来像是从 2 月 1 日开始到 2 月 2 日结束.
为了解决方法2引起的问题,我需要将文本标签向右移动半个刻度线宽度。这样做会让用户非常清楚。
我试过这样做:
final DateAxis xAxis = (DateAxis) this.ganttchart.getXAxis();
xAxis.getChildrenUnmodifiable().addListener(new ListChangeListener<Node>()
{
@Override
public void onChanged(javafx.collections.ListChangeListener.Change<? extends Node> c)
{
final List<Node> labels = xAxis.getChildrenUnmodifiable().filtered(node -> node instanceof Text);
for (Node label : labels)
{
label.setTranslateX(xAxis.getWidth() / (labels.size() - 1) / 2);
}
}
});
但是,这样做似乎根本不会将Text 标签向右移动。
【问题讨论】:
标签: java javafx charts javafx-8 gantt-chart