Salve galera…
Seguinte, eu consegui fazer a parte de enviar um ArrayList para o iReport, porem agora eu preciso ir adicionando valores a uma JTable e ir populando um ArrayList para mandar esses valores para o iReport.
No JTable eu tenho uma coluna chamado “Qtd” que se refere a quantidade de etiquetas que irei imprimir.
Seria mais ou menos isso.
Meu JTable
Produto | Qtd
CocaCola 5
Chocolate 6
Esse eh + ou - o ambiente do meu JTable, entaum quero emitir 5 etiquetas de CocaCola e 6 Etiquetas de Chocolate. Pra fazer isso, estou tentando fazer o seguinte código.
//metodo que uso para gerar as etiquetas.
public void imprimeEtiquetas() throws JRException {
String arquivo = "relatorios/Etiquetas.jasper";
java.io.InputStream file = getClass().getClassLoader().getResourceAsStream(arquivo);
Etiquetas etiqueta = new Etiquetas();
ArrayList lista = new ArrayList();
int qtd = 0;
for(int y = 0; y < tabelaEtiqueta.getRowCount(); y++){
etiqueta.setReferencia((String)tabelaEtiqueta.getValueAt(y, 0));
String qtdE = (String)tabelaEtiqueta.getValueAt(y, 2); //qtd de etiquetas
qtd = Integer.parseInt(qtdE);
for(int x = 0; x < qtd; x++){
lista.add(etiqueta);
}
}
Map parametros = new HashMap();
parametros.put("REFERENCIA", etiqueta.getReferencia());
JRDataSource dados = new JRBeanCollectionDataSource(lista);
JasperPrint printer = JasperFillManager.fillReport(file, parametros, dados);
JRViewer view = new JRViewer(printer);
JDialog dialog = new JDialog();
dialog.getContentPane().add(view);
new AbreRelatorios().abreRelatorio(dialog);
}
//classe que uso para retornar os valores
public class Etiquetas{
private String referencia = "";
public void setReferencia(String referencia){
this.referencia = referencia;
}
public String getReferencia(){
return this.referencia;
}
}
O problema que estou encontrando eh que apenas consigo imprimir o ultimo laco do for, por exemplo nesse caso esta saindo 11 etiquetas de Chocolate, sendo que estou mandando 5 de CocaCola e 6 de Chocolate…Eh como se o for estivesse juntando td e imprimindo soh o ultimo item da JTable.
Desde já, Obrigado !