quarta-feira, 28 de março de 2012

jasper imprimir conforme ordenação do jtable

Como gerar um relatorio no jasper com os dados da jtable, inclusive respeitando a ordem que o usuario colocou quando mandou ordenar a coluna?

primeiro no model voce vai colocar como ultimo elemento o objeto na linha.
para nao mostra-lo basta limitar o numero de coluna no proprio model.


public class ModelAtosRegistradosReport extends AbstractTableModel {

private List{Cliente} list;
private String[] nomeColuna = new String[]{"ID", "Nome"};

public ModelAtosRegistradosReport(List{Cliente} list) {
this.list = list;
}

public int getRowCount() {
return(listAtosRegistrados == null ? 0 : list.size());
}

public int getColumnCount() {
return nomeColuna.length;
}

@Override
public String getColumnName(int column) {
return nomeColuna[column];
}

public Object getValueAt(int rowIndex, int columnIndex) {
final Cliente item = list.get(rowIndex);
switch (columnIndex) {
case 0:
return item.getID();
case 1:
return item.getNome();
default:
return item;
}
}
}


depois eh so pegar o objeto do model e montar seu JRDataSource assim:


for (int i = 0; i < table.getRowCount(); i++) {
Cliente item = (Cliente) table.getModel().getValueAt(table.convertRowIndexToModel(i), table.getModel().getColumnCount());



Da tambem pra vc aproveitar ecolocar um checkbox na jtable para mandar para o relatorio somente os selecionados tambem funga.

Nenhum comentário:

Postar um comentário