【发布时间】:2019-04-12 07:36:48
【问题描述】:
我正在使用jFreeChart 制作甘特图并添加每个任务,我使用Enumeration 实用程序从Hashtable 获取元素。我可以发送年份和日期,但是当尝试使用此行发送月份之类的参数时会出现异常:
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格式?
【问题讨论】:
-
这是
start > end时的预期行为。如果在调试器中看起来没问题,您可能会检查较大的代码是否存在竞争条件。 -
getFechaInicio和getFechaFin返回什么类型?什么价值观? -
@herMa694 将更多详细信息发布为对问题的编辑而不是评论。
标签: java date netbeans jfreechart