将 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
我能够使用这个答案在 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