Не могу отправить месяц как параметр - PullRequest
1 голос
/ 12 апреля 2019

Я использую 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 формат?

1 Ответ

1 голос
/ 12 апреля 2019

Я нашел простой способ сделать это:

   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 на самом деле не нужно.Потому что я уже передаю значение Date в hT.get(obj).getFechaInicio().Этот метод только создает значение Date, передавая int значения дня, месяца и года.Теперь я могу сгенерировать диаграмму Ганта с этим.

...