【问题标题】:Adding DateAxis to gantt Chart Javafx将 DateAxis 添加到甘特图 Javafx
【发布时间】:2016-07-09 02:02:54
【问题描述】:

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

我还可以使用 this-http://myjavafx.blogspot.com.by/2013/09/javafx-charts-display-date-values-on.html 添加一个 DateAxis

但现在它无法使用,因为当前的甘特图不将“长度”作为日期处理。所以它完美准确地绘制了图表的开头,但图表的结尾可以在任何地方,如果您使用图表调整窗口大小,结尾会更加随机。

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

我将“timeLength”设置为毫秒数。但基本上这不起作用,它只能接收 long。另外我不能使用 JfreeChart,因为我不能添加我使用的 FXML。

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

谢谢。

【问题讨论】:

    标签: java javafx charts axis gantt-chart


    【解决方案1】:

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

    /**
     * @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

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多