将 DateAxis 添加到甘特图 Javafx

Adding DateAxis to gantt Chart Javafx

我能够使用这个答案在 JavaFX 中制作甘特图 -

此外,我还可以使用此方法添加 DateAxis-http://myjavafx.blogspot.com.by/2013/09/javafx-charts-display-date-values-on.html

但现在无法使用,因为当前的甘特图无法将 "length" 处理为日期。所以它非常准确地绘制了图表的开头,但是图表的结尾可以在任何地方,如果你用图表调整 window 的大小,结尾会更加随机。

我正在添加新图表 .add(new XYChart.Data(job.getTime(), machine, new ExtraData( timeLength, "status-red"))

其中 "timeLength" 我设置为毫秒数。但基本上这不起作用,它只能接收 long.Also 我不能使用 JfreeChart,因为我不能添加我使用的 FXML。

那么我怎样才能让每个图表的开头和结尾都准确呢?

谢谢。

将以下函数添加到 DateAxis class 以计算从毫秒到视觉单位的比例因子。

/**
 * @return The scale factor from milliseconds to visual units 
 */
public double getScale(){
    final double length = getSide().isHorizontal() ? getWidth() : getHeight();

    // Get the difference between the max and min date.
    double diff = currentUpperBound.get() - currentLowerBound.get();

    // Get the actual range of the visible area.
    // The minimal date should start at the zero position, that's why we subtract it.
    double range = length - getZeroPosition();

    return length/diff;
}

测试结果

    Date startDate=new Date();
    long duration = 1000*60*1;//1 hour in milliseconds
    series1.getData().add(new XYChart.Data(startDate, machine, new ExtraData(duration, "status-green")));

    startDate = new Date(startDate.getTime()+duration);
    duration = 1000*60*1;//2 hours in milliseconds
    series1.getData().add(new XYChart.Data(startDate, machine, new ExtraData(duration, "status-red")));

截图1