[RESOLVIDO] jTable - MouseClicked

Bom Dia Pessoal,

Eu tenho uma interface de cadastro de funcionarios, com varios componetes jTextField para preenchimento (exemplo, nome, rg, cpf, etc), que insere no banco de dados e mostra na jTable. Até aí tudo bem, acontece que eu gostaria de vincular um evento (MouseClicked) que no momento em que o usuario clicar na Row da jTable, ele pega os dados dessa linha e coloque nos componentes para serem “Alterados”, ou seja, o evento vai me trazer todos os dados da linha que eu selecionei.

Eu não estou conseguindo, tentei pegar o Codigo da linha selecionada atraves do método jTable.getValueAt(row,col), porem não deu certo porque o evento MouseClicked não está executando.

Alguem poderia me ajudar.
Desde já agradeço.

você ja programou alguma coisa? Se sim, poste o código para que todos possam tentar ajudar

Segue um trecho do codigo …

private void tblFuncMouseClicked(java.awt.event.MouseEvent evt) {                                     
        FuncionarioDAO funcDAO = new FuncionarioDAO();
        Funcionarios func = new Funcionarios();

        if (!tblFunc.getRowSelectionAllowed()) {
            JOptionPane.showMessageDialog(null, "Erro ao selecionar dados da tabela!");
        } else {
            int codFunc = Integer.parseInt(tblFunc.getValueAt(tblFunc.getSelectedRow(), 0).toString());
            func.setCodFunc(codFunc);
            funcDAO.getDados(func);
        }
}

Bom pelo que eu entendi vc ja tá fazendo a busca o problema é que nao ta fazendo atribuição dos valores nos campos.

Ali na linha:

funcDAO.getDados(func)

acredito que seja um método de busca, mas você tá fazendo a busca passando como parâmetro a classe bean, ou modelo nao sei como vc à chama. Enfim isso não importa vai da modelagem de cada um.
Mas pelo que eu entendo essa classe deveria retornar um objeto do tipo Funcionarios então você deveria fazer assim:

func = funcDAO.getDados(func);

Feito isso você atribui aos campos o valor retornado do método. Por exemplo:

txtNome.setText(func.getNome().trim());

E assim por diante.

Entendeu?

Até aí entendi, mas não sei se o metodo getValueAt vai me retornar o que quero, e não consigo simular porque o evento não está executando. O que eu quero é o Codigo do Funcionario que eu selecionei. Entendeu?
Porque na questão de retornar os valores para os jTextFields é tranquilo.
Será que tem outro evento que poderia fazer o mesmo?

ahhh agora entendi ^^ não ta entrando no método? Você ja debugou pra verificar? Eu já fiz algo parecido e funcionou sem problemas

private void tblMouseClicked(java.awt.event.MouseEvent evt) {                                     
        try {
            int codigo = Integer.parseInt(jTable.getModel().getValueAt(jTable.getSelectedRow(), 0).toString());
            if (codigo > 0) {
                try {
                    classe.setID(codigo);                   
                    inserirDadosNosComponentes(classe);
                } catch (Exception e) {
                    e.PrintStackTrace();
                }
            }
        } catch (Exception e) {
                    e.PrintStackTrace();
        }
    }

ae pessoal, só para atualizar o Tópico, caso alguem precise, tá aí.
No evento MouseClicked ele vai retornar nos componentes do seu JFrame,
todos os dados da linha selecionada.
O método inserirDadosNosComponentes(classe) é responsavel por consultar no banco os dados do registro
selecionado, e inserir nos componentes.(jtextfield, jcombobox, etc).

é isso ae … :wink:
t+

1 curtida