我能够使用这个答案 - Gantt chart from scratch在JavaFX中制作甘特图。
此外,我还可以使用此功能添加DateAxis - http://myjavafx.blogspot.com.by/2013/09/javafx-charts-display-date-values-on.html
但是现在它无法使用,因为目前的甘特图并没有将“长度”作为日期来处理。所以它完全准确地绘制了图表的开头,但图表的结尾可以是任何地方,如果你用图表调整窗口大小,那么结尾将更加随机。
我正在添加新图表
.add(new XYChart.Data(job.getTime(), machine, new ExtraData( timeLength, "status-red"))
其中“timeLength”我设置为毫秒数。但基本上这不起作用,它只能收到很长时间。我也不能使用JfreeChart,因为我无法添加它使用的FXML。
那么我怎样才能在每张图表的开头和结尾都准确无误?
谢谢。
答案 0 :(得分:0)
将以下函数添加到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