Code para cambiar el color de las subtareas en Gantt Chart

Necesito cambiar el color de las subtareas en unaGráfico de gant. Mi ejemplo se basa enGanttDemo2 con el siguiente conjunto de datos y renderizador. En diferentes foros encontré algunas discusiones relacionadas con este tema, pero no encontré un @ simple clatrabajand ejemplo. En particular, puedo cambiar el color de las tareas, pero no sé cómo extraer subtareas.

private IntervalCategoryDataset createSampleDataset() {

    final TaskSeries s1 = new TaskSeries("Scheduled");

    final Task t1 = new Task(
        "Design", date(1, Calendar.APRIL, 2001), date(1, Calendar.MAY, 2001));
    t1.addSubtask(new Task("Design 1", date(1, Calendar.APRIL, 2001), date(15, Calendar.APRIL, 2001)));
    t1.addSubtask(new Task("Design 2", date(16, Calendar.APRIL, 2001), date(25, Calendar.APRIL, 2001)));
    t1.addSubtask(new Task("Design 3", date(26, Calendar.APRIL, 2001), date(1, Calendar.MAY, 2001)));
    s1.add(t1);

    final Task t2 = new Task(
        "Proposal", date(1, Calendar.JUNE, 2001), date(1, Calendar.JULY, 2001));
    t2.addSubtask(new Task("Proposal 1", date(1, Calendar.JUNE, 2001), date(15, Calendar.JUNE, 2001)));
    t2.addSubtask(new Task("Proposal 2", date(16, Calendar.JUNE, 2001), date(25, Calendar.JUNE, 2001)));
    t2.addSubtask(new Task("Proposal 3", date(26, Calendar.JUNE, 2001), date(1, Calendar.JULY, 2001)));
    s1.add(t2);

    final TaskSeriesCollection collection = new TaskSeriesCollection();
    collection.add(s1);
    return collection;
}

class MyRenderer extends GanttRenderer {

    private static final Color subtask1Color = Color.blue;
    private static final Color subtask2Color = Color.cyan;
    private static final Color subtask3Color = Color.green;
    private static final long serialVersionUID = 1L;

    public MyRenderer() {
        super();
    }

    @Override
    public Paint getItemPaint(int row, int col) {
        System.out.println(row + " " + col + " " + super.getItemPaint(row, col));
        if (row == 0) {
            return subtask1Color;
        } else if (row == 1) {
            return subtask2Color;
        } else if (row == 2) {
            return subtask3Color;
        } else {
            return super.getItemPaint(row, col);
        }
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta