Ajuda, ordenar a tabela e pegar a coluna que ordena

Tenho uma tabela que está com o seguinte metodo ativado,

tabela.setAutoCreateRowSorter(true); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tabela.getModel()); tabela.setRowSorter(sorter);
ele funciona certinho para ordenar a tabela pela coluna clicada, porém estou com um problema.

Nesta tela eu gero um relatório, preciso que no relatório do ireport saia exatamente como está na tabela.

se alguem souber um geito de pegar a coluna que está ordenando a tabela ou algum outro método para gerar este relatório…

eu ja achei o evento de quando o cara clica na coluna…

[code]tabela.getRowSorter().addRowSorterListener(new RowSorterListener() {

        public void sorterChanged(RowSorterEvent e) {
           //quando o cara clica na coluna para ordenar dispara este evento, mas nao consegui pegar a coluna que o cara clicou.
        }
    });[/code]

agradeço desde já.

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 :smiley: