我正在使用jFreeChart
制作甘特图,并使用Enumeration
实用程序添加每个任务im来从Hashtable
获取元素。我可以发送年份和日期,但是在以下行中尝试像参数一样发送Month时会出现异常:
hT.get(obj).getFechaFin().getMonth()
其中hT
是Hashtable
,而obj
是索引。我了解getMonth()
返回int
。它抛出:
Exception in thread "AWT-EventQueue-0"
java.lang.IllegalArgumentException: Requires start <= end.
然后将代码行更改为Calendar.MARCH
,它起作用并生成图表。并且它还返回int
,它们的索引都以0表示第一个月的一月开始。那为什么不起作用呢?我正在使用jCalendar-1.4.jar
来轻松地从组件中获取日期。
//here I load the Hashtable and I generate the Chart
public static IntervalCategoryDataset createDataset(){
final TaskSeries s1 = new TaskSeries("Scheduled");
for (Enumeration e = hT.keys(); e.hasMoreElements();) {
Object obj = e.nextElement();
s1.add(new Task(hT.get(obj).getTarea().toString(),
new SimpleTimePeriod(
date(hT.get(obj).getFechaInicio().getDay(),
hT.get(obj).getFechaInicio().getMonth(),
hT.get(obj).getFechaInicio().getYear()),
date(hT.get(obj).getFechaFin().getDay(),
hT.get(obj).getFechaFin().getMonth(),
hT.get(obj).getFechaFin().getYear()))));
}
final TaskSeriesCollection collection = new TaskSeriesCollection();
collection.add(s1);
return collection;
}
//and here receives the month parameter
private static Date date(final int day, final int month, final int year){
final Calendar calendar = Calendar.getInstance();
calendar.set(year,month,day);
final Date result = calendar.getTime();
return result;
}
我需要使用hT.get(obj).getFechaFin().getMonth()
,因为它保存在二进制文件中。有没有办法转换为Calender.MONTH
格式?
答案 0 :(得分:1)
我找到了一种简单的方法:
public static IntervalCategoryDataset createDataset(){
final TaskSeries s1 = new TaskSeries("Tareas");
for (Enumeration e = hT.keys(); e.hasMoreElements();) {
Object obj = e.nextElement();
s1.add(new Task(hT.get(obj).getTarea().toString(),
new SimpleTimePeriod(hT.get(obj).getFechaInicio(), hT.get(obj).getFechaFin())));
}
final TaskSeriesCollection collection = new TaskSeriesCollection();
collection.add(s1);
return collection;
}
private static Date date
并不是必须的。原因我已经在hT.get(obj).getFechaInicio()
中传递了Date值。该方法仅通过传递日期,月份和年份的int
值来构造一个Date值。现在,我可以以此生成甘特图。