Após ler muita coisa na internet eu consegui ordenar a tabela com o rowsorter, pegar o id correto e exibir no relatório
igual a tabela está ordenada.
primeiro eu adicionei estes métodos para ordenar a tabela e saber qual a coluna o cara clicou.
ordenar tabela pela coluna clicada.
tabela.setAutoCreateRowSorter(true);
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tabela.getModel());
tabela.setRowSorter(sorter);
saber em qual coluna o usuário clicou.
[code]JTableHeader header = tabela.getTableHeader();
header.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
JTable table = ((JTableHeader) e.getSource()).getTable();
TableColumnModel colModel = table.getColumnModel();
int vColIndex = colModel.getColumnIndexAtX(e.getX());
int mColIndex = table.convertColumnIndexToModel(vColIndex);
if (vColIndex == -1) {
return;
}
ordenacao = mColIndex;//criei esta váriavel ordenacao;
}
});[/code]
para pegar o id da tabela eu uso este método…
int n = tabela.getSelectedRow();
n = tabela.convertRowIndexToModel(n);
para sair ordenado no relatório eu fiz o método getOrder() e coloquei na sql que gera o relatório;
private String getOrder() {
String sql = "";
switch (ordenacao) {
case 0:
sql = " g.idGado, g.tipo, g.idGado, g.brinco, g.sexo";
break;
case 3:
sql = " marca.descricao, g.idGado, g.brinco, g.sexo";
break;
case 4:
sql = " raca.descricao, g.idGado, g.brinco, g.sexo";
break;
case 5:
sql = " g.tipo, g.idGado, g.brinco, g.sexo";
break;
case 6:
sql = " g.idGado, g.brinco, g.sexo";
break;
case 7:
sql = " g.nome, g.idGado, g.brinco, g.sexo";
break;
case 8:
sql = " g.sexo, g.idGado, g.brinco, g.sexo";
break;
case 9:
sql = " g.peso, g.idGado, g.brinco, g.sexo";
break;
default:
sql += " g.idGado,g.tipo , g.brinco, g.sexo";
break;
}
return sql;
}
Se este tópico te ajudou comente por favor 