无法发送“月份”作为参数

时间:2019-04-12 07:36:48

标签: java date netbeans jfreechart

我正在使用jFreeChart制作甘特图,并使用Enumeration实用程序添加每个任务im来从Hashtable获取元素。我可以发送年份和日期,但是在以下行中尝试像参数一样发送Month时会出现异常:

hT.get(obj).getFechaFin().getMonth()

其中hTHashtable,而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格式?

1 个答案:

答案 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值。现在,我可以以此生成甘特图。