[RESOLVIDO]Duvida Pesquisar e Selecionar Registro no Jtable

Olá pessoal consegui implementar o método abaixo em um JDialog para que eu possa buscar um determinado registro na minha jtable, estou utilizando a Classe TabelModel que extende do AbstractModel para trabalhar com jTable conforne orientam no forum, o problema é que consigo buscar os dados corretamente e aparecem na tela, porém quando eu clico na linha que busquei o valor que é retornado é o da primeira linha da tabela, como posso resolver isto?
abaixo o método que eu suo para buscar os dados e depois o método que uso para pegar os valores na tabela.

private void jTextFieldPesquisaCfopKeyPressed(java.awt.event.KeyEvent evt) {                                                  
        // busca dados dentro da JTABLE.
        final TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(modeloCfop);
        jTableConsultaCfopDialog.setRowSorter(sorter);
        String cfop = jTextFieldPesquisaCfop.getText();

        if (cfop.length() == 0) {
            sorter.setRowFilter(null);
        } else {
            try {
                sorter.setRowFilter(RowFilter.regexFilter(cfop));
                 } catch (PatternSyntaxException pse) {
                JOptionPane.showMessageDialog(this, "Erro ao recuperar informação\n" + pse.getMessage(), "ERRO!", JOptionPane.ERROR_MESSAGE);
                System.err.println("Erro" + pse.getMessage());
            }

        }

    }   



// recupera os dados da linha selecionada para passar para ou outro frame.     

 private void jTableConsultaCfopDialogMouseClicked(java.awt.event.MouseEvent evt) {                                                      
        if (evt.getClickCount() == 2) {

            try {
                idCfop = Long.parseLong(jTableConsultaCfopDialog.getModel().getValueAt(jTableConsultaCfopDialog.getSelectedRow(), 4).toString());
                cfop = jTableConsultaCfopDialog.getModel().getValueAt(jTableConsultaCfopDialog.getSelectedRow(), 0).toString();
                descricao = jTableConsultaCfopDialog.getModel().getValueAt(jTableConsultaCfopDialog.getSelectedRow(), 1).toString();
                this.dispose();

            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, "VOCÊ DEVE SELEIONAR UM CFOP! " + ex.getMessage(), "ERRO", JOptionPane.ERROR_MESSAGE);
                System.out.println("erro ao selecionar colaborador: " + ex);
            }

        }

    }      


Desde já muito obrigado!

Olá, sempre retorna o primeiro registro ou apenas não pega o registro correto que vc clicou?
Tem um problema comum que ocorre quando rearranjamos os registros de uma JTable, por exemplo c vc clicar na coluna da tabela e reordenar os registros, o model não será afetado, os dados no model continuarão na mesma ordem, então quando vc buscar pelo índice no model pela linha selecionada vai trazer outro registro.
Para estes casos vc precisa converter o índice da linha selecionada no índice que está no model:
Trocar o:
jTable.getSelectedRow()
por:
jTable.convertRowIndexToModel(jTable.getSelectedRow())
Tenta aí e v c resolve.

1 curtida

Muito obriagdo @Rodrigo_Void funcionou perfeitamente!