JTABLE - Perdi a referência do model

Bom dia.

Seguinte, tenho uma tela onde exibo os dados num JTable e conforme o usuário percorre o Grid todas as informações são exibidas em campos como JTextField, JComboBox e outros. Recentemente inclui uma rotina para “Pesquisar” o JTable. Estou usando “sorter” para fazer esta consulta:

1. TableRowSorter sorter = new TableRowSorter(jTableAplic.getModel());
2. jTableAplic.setRowSorter(sorter);
3. sorter.setRowFilter(RowFilter.regexFilter("(?i)"+p.getPesquisa()));
  • jTableAplic é meu objeto JTABLE
  • p.getPesquisa() é uma String de um objeto que uso pra fazer pesquisa

Quando faço a pesquisa o meu “Model” não é alterado mas é ai que começou meu problema pq eu perco a referencia da “linha” e eu tenho algumas colunas que pego do model justamente pra não ter que ficar usando DAO para popular os dados. Só que agora perdi a referencia de “Em qual linha este registro esta no meu MODEL”.

Antes eu pegava a linha e coluna:

 linha = jTableAplic.getSelectedRow();
 colun = jTableAplic.getSelectedColumn();

E usava pra pegar algum dado do model:

Ordem.setText ((String) jTableAplic.getModel().getValueAt(linha, 3));

Mas agora to perdido. Existe uma forma de saber em qual linha o registro exibido no JTable se refere no MODEL?

Reparem no campos “Tamanho do Código” e “Tamanho da Descrição”

Quando consulto:

O valor esta errado porque estou pegando da linha 1 quando deveria pegar da linha 4

Esse é o grande problema de não implementar orientado à objetos, não usar padrões de projeto, tudo começa a ficar complicado.

Seu TableModel deveria servir apenas para renderizar uma coleção de objetos.
O TableRowSorter não afeta a estrutura de dados, somente a visualização, então, indiferente da ordenação, você pode obter o índice real do objeto dessa forma:

int linhaSelecionada = minhaJTable.getSelectedRow();
int indiceObjeto = minhaJTable.convertRowIndexToModel(linhaSelecionada);
TipoDeDado objetoSelecionado = listaDeObjetos.get(indiceObjeto);
1 curtida

Vc sempre me salva meu amigo … muito grato … e eu to aperfeiçoando … muita coisa já mudei no meu projeto por intervenção sua. Vlw mesmo.