가장 쉬운 방법은 GanttRenderer
을 확장하고 삼각형을 그리는 두 번째 패스를 추가하는 것입니다.
다음 렌더러가 트릭을 수행해야합니다. 그냥 삼각형의 그림을 drawTriangle
루틴에 추가하십시오.
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.CategoryItemRendererState;
import org.jfree.chart.renderer.category.GanttRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.gantt.GanttCategoryDataset;
public class TriangleGanttRenderer
extends GanttRenderer
{
public TriangleGanttRenderer()
{
}
@Override
public void drawItem(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea, CategoryPlot plot,
CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column, int pass)
{
if (pass == 1 && (dataset instanceof GanttCategoryDataset))
{
drawTriangle(g2, state, dataArea, plot, domainAxis, rangeAxis, dataset, row, column);
}
else
{
super.drawItem(g2, state, dataArea, plot, domainAxis, rangeAxis, dataset, row, column, pass);
}
}
protected void drawTriangle(Graphics2D g2, CategoryItemRendererState state, Rectangle2D dataArea,
CategoryPlot plot, CategoryAxis domainAxis, ValueAxis rangeAxis, CategoryDataset dataset, int row, int column)
{
// ... add your draw routine here ...
}
@Override
public int getPassCount()
{
return 2;
}
}
출처
2015-01-22 08:03:37
Uli
질문에 대한 답변이 있습니까? 이 경우 귀하의 질문에 해결 된 것으로 표시하십시오. 감사! – Uli