2012-01-18 76 views
3

我有5个任务的甘特图。每个任务分为3个子任务。我需要为每个子任务定义不同的颜色,例如子任务1:“浅蓝色”,子任务2:“蓝色”,子任务3:“深蓝色”。我试图谷歌一些例子,但我没有找到任何完整的工作示例。谢谢。如何更改JFreeChart甘特图中特定子任务的颜色?

更新#1: 我正在使用IntervalCategoryDataset作为数据集。

IntervalCategoryDataset dataset = createDataset(data); 

final Task t = new Task("Resource " + i, date(time11), date(time14)); 
t.addSubtask(new Task("Resource " + i, date(time11), date(time12))); 
t.addSubtask(new Task("Resource " + i, date(time12), date(time13))); 
t.addSubtask(new Task("Resource " + i, date(time13), date(time14))); 

回答

3

您可以覆盖渲染器的getItemPaint()方法,如讨论here

附录:由于Gnatt图表使用的是GanttRenderer,所以您可以按照这种方式查看现有颜色。只需返回给定行和列的所选颜色。

plot.setRenderer(new MyRenderer()); 
... 
private static class MyRenderer extends GanttRenderer { 

    @Override 
    public Paint getItemPaint(int row, int col) { 
     System.out.println(row + " " + col + " " + super.getItemPaint(row, col)); 
     return super.getItemPaint(row, col); 
    } 
} 
+0

我看过这个话题,但我不明白整个解决方案是什么。我需要一些小而明确的例子。 – 2012-01-18 21:15:30

+1

我已更新链接并在上面进行了详细说明。 – trashgod 2012-01-19 00:00:20

+0

我试过这段代码。但我不明白在哪里定义了子任务的颜色?如果我仅这样做,那么所有的子任务仍然具有相同的蓝色。 – 2012-01-19 12:10:33