Selecionar uma linha na tabela e exibir nos jtextfield

6 respostas
ken420

Pessoal to com um problemao aqui, criei o metodo para selecionar uma linha na jtable e exibir nos meu jtextfields mas da um erro!

criei o codigo para selecionar minha linha e exibir no jtextfield veja

private void tbClientesLinhaSelecionada(JTable tb){
        if (tb.getSelectedRow() != -1){
          o erro aponta aqui =>  tf_nome.setText(clientes.get(tb.getSelectedRow()).getNome());
            //tf_nome.setText(clientes.get(tb.getSelectedRow()).getNome());
          /*  tf_endereco.setText(clientes.get(tb.getSelectedRow()).getEndereco());
            tf_bairro.setText(clientes.get(tb.getSelectedRow()).getBairro());
            tf_cidade.setText(clientes.get(tb.getSelectedRow()).getCidade());
            tf_uf.setText(clientes.get(tb.getSelectedRow()).getUf());
            tf_cep.setText(clientes.get(tb.getSelectedRow()).getCep());
            tf_telefone.setText(clientes.get(tb.getSelectedRow()).getTelefone());*/
        } /*

esse é o erro que aponta para tf_nome.setText…

parece que ele disparo para o nada!!
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at br.com.Estudando.Cliente.ProcurarC.tbClientesLinhaSelecionada(ProcurarC.java:407)
        at br.com.Estudando.Cliente.ProcurarC.access$100(ProcurarC.java:28)
        at br.com.Estudando.Cliente.ProcurarC$2.valueChanged(ProcurarC.java:135)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
        at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:137)
        at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:668)
        at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:929)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1140)
        at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)

e em cliente control tenho esse metodo

public List<ClienteBean> listarClientes(String nome){

        List<ClienteBean> clientes = new ArrayList();
        try{
            
            pstm = bd.conectar().prepareStatement(consultaCliente);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();
            ClienteBean cli;
            while (rs.next()){
                cli = new ClienteBean();
                cli.setCodigo(rs.getInt("codigo"));
                cli.setNome(rs.getString("nome"));
                cli.setEndereco(rs.getString("endereco"));
                cli.setBairro(rs.getString("bairro"));
                cli.setCidade(rs.getString("cidade"));
                cli.setUf(rs.getString("uf"));
                cli.setCep(rs.getString("cep"));
                cli.setTelefone(rs.getString("telefone"));
                clientes.add(cli);
            }
            bd.desconectar();
        } catch(Exception e){
            e.printStackTrace();
        }
        return clientes;
    }
}

o que faco pessoal algueim tem alguma dica? ou solucao obrigado

6 Respostas

T

ken 420, o que eu faço aqui é o seguinte:

private void jTableMouseClicked(java.awt.event.MouseEvent evt) {                                                 
        int selecionado = jTable.getSelectedRow();
        jText.setText(jTable.getValueAt(selecionado,coluna); //coluna é a coluna da tabela que você quer pegar a informação. Você pode colocar diretamente o número da coluna. Ex.: 0, 1, 2, etc....
}

Espero ter ajudado.

ken420

deixei assim

private void tb_clienteMouseClicked(java.awt.event.MouseEvent evt) {
                                               
        int selecionado = tb_cliente.getSelectedRow();   
        tb_cliente.setText(tb_cliente.getValueAt(selecionado,0)); //coluna é a coluna da tabela que você quer pegar a informação. Você pode colocar diretamente o número da coluna. Ex.: 0, 1, 2, etc....   
 
    }

e a parte q tem tb_cliente.setText esta com erro cannot find simbol :ll pq sera? vlw pelaforca

ken420

creio q o problema possa ser ou o setText ou a variavel depois de selecionado! no caso o 0

T

Mas você colocou o seguinte:

tb_cliente.setText(tb_cliente.getValueAt(selecionado,0));

Mas tb_cliente, pelo o que eu entendi é o nome da sua tabela. Você precisa colocar o nome do seu jTextField e não o nome da tabela, pois você precisa setar o texto do jTextField. E do jeito que você fez você estari setando o texto do sua tabela, tb_cliente.
Eu só esqueci de fazer o seguinte. Faça com esse código.

jTextFieldField.setText(tb_cliente.getValueAt(selecionado,0).toString);

Aqui pelo menos funcionou. Testa ai e depois me avisa.

Abraços

T

Outra coisa…o 0 (zero) (tb_cliente.getValueAt(selecionado,0)), como eu disse, mostra a coluna que você quer pegar sua informação. Por exemplo. Você quer pegar o texto da linha 1 da sua tabela e na coluna 3. Ai você vai digitar:

tb_cliente.getValueAt(0,3)

No nosso caso a linha selecionada é a variavel selecionado.
Ai falta você colocar a coluna que você deseja. Lembrando que sempre que a primeira coluna é a coluna 0 (zero).

Valeu

J

ken420,

Já pensou em usar TableModel?
Com TableModel é muito mais fácil manipular os dados para popular sua tabela.

Dê uma pesquisada aqui no fórum sobre TableModel, tem bastante exemplos. A princípio pode parecer meio complexo, mas depois que você pega a manha da parada vai ver que é muito mais fácil manipular os objetos.

Qualquer dúvida posta aí…

Abraços

Criado 3 de fevereiro de 2009
Ultima resposta 5 de fev. de 2009
Respostas 6
Participantes 3