Mudar a cor da linha no jasper report

2 respostas
V

Boa tarde pessoar!!!

Seguinte como eu faco no jasper para mudar a cor da linha diante de uma condicao.

vms supor q n meu relatório tenho field 1 e 2

um exemplo,

if(field1 == 1)
//acao -> pinta de amarelo
else
//acao -> pinta de verde

alguma coisa assim

estou usando ireport 3.5.0

queria de preferencia fazer isso em codigo java

nesse momento estou indo por esse caminho mas sem sucesso

JasperPrint impressao = JasperFillManager.fillReport(pathJasper
					+ "/Atividades.jasper", new HashMap(), ds);
			cont = cont + 1;
			String nome = "Atividades" + cont + ".pdf";
			
			
			for (int i = 0; i < impressao.getPages().size(); i++) {
				JRPrintPage page = (JRPrintPage) impressao.getPages().get(i);
				List elementy = page.getElements();
				for (int j = 0; j < elementy.size(); j++) {
					if (elementy.get(j) instanceof JRTemplatePrintText) {
						JRTemplatePrintText text = (JRTemplatePrintText) elementy
								.get(j);
						if (text.getText().equalsIgnoreCase("alta")) {
			
							JRDesignConditionalStyle teste = new JRDesignConditionalStyle();
							teste.getLineBox().getPen().setLineColor(Color.RED);
                                                 text.setStyle(teste);
							text.setMode(JRElement.MODE_OPAQUE);
						}

					}
				}
			}

			JasperExportManager.exportReportToPdfFile(impressao, path + "/"
					+ nome);

o relatório é exportado normalmente porem ele nao pinta nenhuma linha.

alguem ja fez isso??? vlws pessoal!!!

2 Respostas

A

para intercalar cor sim cor naum (ui) entre as linhas, eu faço assim:

crio um retangulo com a cor que eu quero… preenchendo a linha com ele.
Envio ele para trás dos textos

Nas propriedades desse retangulo, tem: “Imprimir quando a expressão”

alih dentro eu jogo o código:

new Boolean(($V{COLUMN_COUNT}.intValue() % 2) == 0)

boa sorte!

V

opa, boa tarde.

Aleques, assim eu tbm consegui fazer, mas nao dava certo pois eram muitas opcoes que sao traziadas do branco, entao caso retirasse ou adicionasse eu teria que voltar e mecher no relatorio toda vz que acontecesse isso

mas eu consegui resolver.

passo 1

criei um sub onde Expressionclass é JasperReport

passo 2

adicionei datasource para ele

passo 3

criei um field chamado subReporte e coloquei no subreportexpression

e fiz o seguinte data source

f (campo.getName().equals("subReporte")) {
			JasperReport subRelatorio = (JasperReport) JRLoader
					.loadObjectFromLocation(caminhoSub); //carreguei o template do subrelatorio
		
				JRRectangle rectangle = (JRRectangle) subRelatorio.getDetail()
						.getElementByKey("retangul"); //adicionei uma key no retangulo(isso é feito la na propriedade dele la no IREPORT) que esta atras do texto que quero pintar

				if (valor.equalsIgnoreCase(
						"opcao1"))
					rectangle.setBackcolor(new Color(255, 102, 102));

				if (valor.equalsIgnoreCase(
						"opcao2"))
					rectangle.setBackcolor(new Color(153, 204, 255));

				if (valor.equalsIgnoreCase(
						"opcao3"))
					rectangle.setBackcolor(new Color(255, 255, 153));

				if (valorequalsIgnoreCase(
						"opcao4"))
					rectangle.setBackcolor(new Color(255, 51, 0));

				if (valor.equalsIgnoreCase(
						"opcao5"))
					rectangle.setBackcolor(new Color(204, 255, 204));
			
			return subRelatorio; // e retorno um jasper report pra ele. pronto assim fica dinamico!!!!!!!
		}

flws galera!!!

Criado 6 de maio de 2009
Ultima resposta 8 de mai. de 2009
Respostas 2
Participantes 2