title: Code for changing the color of subtasks in Gantt Chart
body: <p>I need to change the color of subtasks in a <a href="http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/ChartFactory.html#createGanttChart%28java.lang.String,%20java.lang.String,%20java.lang.String,%20org.jfree.data.category.IntervalCategoryDataset,%20boolean,%20boolean,%20boolean%29" rel="nofollow">Gantt chart</a>. My example is based on <a href="http://www.java2s.com/Code/Java/Chart/JFreeChartGanttDemo2withmultiplebarspertask.htm" rel="nofollow"><code>GanttDemo2</code></a> with the following dataset and renderer. In different forums I found some discussions related to this topic, but I did not find a clear simple <em>working</em> example. In particular, I can change the color of tasks, but I don't know how to extract subtasks.</p>
  
  <pre><code>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);
          }
      }
  }
  </code></pre>