Boa tarde Galera,
Gostaria de uma ajuda, caso alguém já tenha passado por isso…
Tenho um relatório no Ireport de barras, apenas 1 série, e gostaria de altera a cor de cada barra seguindo uma condição na quantidade do valor atribuído.
Parece simples, mas achei somente um exemplo do gráfico em HTML5, que é da versão pro do Ireport.
Galera,
Pesquisei e pesquisei e consegui resolver apenas com a classe customizer mesmo, segue abaixo implementações, mas basicamente é uma classe que configuro no Ireport, e dentro dela eu faço as alterações nas cores e somente nas condições de valores que eu preciso.
Se mais alguem precisar… esta ai…
Classe customize
public class RelatorioAvaliacaoCustomizer implements JRChartCustomizer{
@Override
public void customize(JFreeChart chart, JRChart jasperChart) {
BarRenderer barRenderer;
barRenderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
BarPainter barPainter = new BarPainter() {
@Override
public void paintBarShadow(Graphics2D arg0, BarRenderer arg1, int arg2,
int arg3, RectangularShape arg4, RectangleEdge arg5, boolean arg6) {
// TODO Auto-generated method stub
}
@Override
public void paintBar(Graphics2D g2, BarRenderer barRenderer, int row, int column,
RectangularShape bar, RectangleEdge base) {
Paint itemPaint = barRenderer.getItemPaint(row, column);
GradientPaintTransformer t = barRenderer.getGradientPaintTransformer();
if (t != null && itemPaint instanceof GradientPaint) {
itemPaint = t.transform((GradientPaint) itemPaint, bar);
}
if(barRenderer.getPlot().getDataset().getValue(row, column).intValue() == 1){
g2.setPaint(Color.green);
}else{
g2.setPaint(Color.black);
}
g2.fill(bar);
/*// draw the outline...
if (barRenderer.isDrawBarOutline()) {
// && state.getBarWidth() > BAR_OUTLINE_WIDTH_THRESHOLD) {
Stroke stroke = barRenderer.getItemOutlineStroke(row, column);
Paint paint = barRenderer.getItemOutlinePaint(row, column);
if (stroke != null && paint != null) {
g2.setStroke(stroke);
g2.setPaint(Color.black);
g2.draw(bar);
}
}*/
}
};
barRenderer.setBarPainter(barPainter);
}
}
Obs: para definir o nome da classe do jar exportado, é necessário declarar seu pacote completo!