Como vincular jtable e jtextfield?

Olá galera,
Estou com dificuldade em fazer a vinculação entre a tabela e os campos de texto. Tenho em jtable e quero que quando clicar em uma determinada linha, os dados da linha selecionada sejam exibidos nos seus respectivos jtextfields. Estou usando netbeans. Gostaria de saber se alguém poderia me ajudar a resolver esse problema.

agradeço desde já.

Att,

Adicione um ListListener no seu JTable, quando ele disparar um evento, pegue o objeto da linha no model e envie para os JTextFields.

pode me ajudar ?
;*

[quote=wanderley patricio]pode me ajudar ?
;*[/quote]

Você pode fazer assim:

No seu model, faça um método para requisitar os dados da linha selecionada:

public SeuObjeto requisitarRegistro(int row)
{
   return SuaListaDeControle.get(row);
}

Na sua JTable, você pode adicionar um MouseListener e controlar o clique sobre algum registro:

table.addMouseListener(new MouseListener() {

            public void mouseClicked(MouseEvent e) {
                if ( e.getClickCount() == 1 )
                {
                    SeuObjeto objeto = seuModelo.requisitarRegistro(table.getSelectedRow());
                    primeiroTextField.setText(objeto.getCampo1());
                    segundoTextField.setText(objeto.getCampo2());
                }
            }
            public void mousePressed(MouseEvent e) {}
            public void mouseReleased(MouseEvent e) {}
            public void mouseEntered(MouseEvent e) {}
            public void mouseExited(MouseEvent e) {}
        });

E voilà!

Só para simplificar:

table.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                if ( e.getClickCount() == 1 )
                {
                    SeuObjeto objeto = seuModelo.requisitarRegistro(table.getSelectedRow());
                    primeiroTextField.setText(objeto.getCampo1());
                    segundoTextField.setText(objeto.getCampo2());
                }
            }
        });

[quote=Marky.Vasconcelos]Só para simplificar:

table.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if ( e.getClickCount() == 1 ) { SeuObjeto objeto = seuModelo.requisitarRegistro(table.getSelectedRow()); primeiroTextField.setText(objeto.getCampo1()); segundoTextField.setText(objeto.getCampo2()); } } }); [/quote]

Boa noite, galera só um dúvida. Conseguir fazer com que os campos da tabela sejam inseridos nos jTextField, porém como faço para inserir um campo que não tem na tabela?
Ex: Na tabela tenho as colunas ID, NOME e ENDEREÇO, mas nos jTextField tenho que mostrar, ID, NOME, ENDEREÇO, CPF …

Qualquer ajuda é bem vinda, obrigado!

Charles Eduardo

ai vc vai ter que pegar esse id e fazer uma consulta ao banco retornando o cpf

[code]linhaSelecionada = jTableClientes.getSelectedRow();

    idClienteSelecionado = Integer.parseInt("" + modelo.getValueAt(linhaSelecionada, 0)); //codigo Id na coluna 1 da tabela
    try {
        ClienteDao dao = new ClienteDao();

        ResultSet cpf = dao.getCPF(idContatoSelecionado);

        if (cpf.next()) {
            jTextFieldCpf.setText(cpf.getString("cpf"));
            

            }

} catch (SQLException ex) {
Logger.getLogger(JFrameCliente.class.getName()).log(Level.SEVERE, null, ex);
}[/code]

[quote=SandroSoftwares]Charles Eduardo

ai vc vai ter que pegar esse id e fazer uma consulta ao banco retornando o cpf

[code]linhaSelecionada = jTableClientes.getSelectedRow();

    idClienteSelecionado = Integer.parseInt("" + modelo.getValueAt(linhaSelecionada, 0)); //codigo Id na coluna 1 da tabela
    try {
        ClienteDao dao = new ClienteDao();

        ResultSet cpf = dao.getCPF(idContatoSelecionado);

        if (cpf.next()) {
            jTextFieldCpf.setText(cpf.getString("cpf"));
            

            }

} catch (SQLException ex) {
Logger.getLogger(JFrameCliente.class.getName()).log(Level.SEVERE, null, ex);
}[/code][/quote]

Caro Sandro obrigado pela resposta, entendi o seu exemplo, porém ainda estou tentando fazer com que apareça não só mais um campo mais sim vários, dessa forma teria que criar vários if. Segue o código que estou desenvolvendo para chamar os campos:
classe UsuarioDAO

public List <Usuario> getList(int iD){
		try{
			List <Usuario> usuarios = new ArrayList<Usuario>();
			PreparedStatement stmt = connection.prepareStatement("select * from usuarios where id=?");
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				Usuario usuario = new Usuario();
				stmt.setInt(1, iD);
				usuario.setUsuario(rs.getString("usuario"));
				usuario.setSenha(rs.getString("senha"));
				usuario.setNome(rs.getString("nome"));
				usuario.setEmail(rs.getString("email"));
				
				usuarios.add(usuario);
			}

classe onde tem minha tabela tem o seguinte evento:

 tfId.setText(tbUsuarios.getValueAt(tbUsuarios.getSelectedRow(), 0).toString()); // vai retorna o valor do id da tabela no jTextField
int id = Integer.parseInt(tfId.getText()); // vai ser utilizado para passagem de parâmetro no método getList(int iD) da classe UsuarioDAO

// Agora a dúvida, como chamo o metodo getList(int ID) para retornar os valores nos jTextField?
// tipo  tfNome.setText(usuario.getList(id));

Mais uma vez obrigado pela resposta, já tentei de várias forma mais não consegui ainda.
Tem alguma ideia?

Bom,
Primeiro lugar: Se você está fazendo uma pesquisa usando o id (chave primaria no banco) por que está usando uma lista??? só vai retornar um usuário…
Poderia somente usar a classe usuario ao invés de uma lista de usuarios.

[code] public Usuario getList(int iD){
try{
Usuario usuario = new Usuario();
PreparedStatement stmt = connection.prepareStatement(“select * from usuarios where id=?”);
stmt.setInt(1, iD);
ResultSet rs = stmt.executeQuery();

        if(rs.next()){  
             
            usuario.setUsuario(rs.getString("usuario"));  
            usuario.setSenha(rs.getString("senha"));  
            usuario.setNome(rs.getString("nome"));  
            usuario.setEmail(rs.getString("email"));  
            usuario.setCPF(rs.getString("cpf")); //adicionei este... por que vc não tinha retornado ele logo aqui???

        } 

}catch (SQLException ex){

}

return usuario; //retornando o usuario escolhido pelo iD
}[/code]

[quote]
// Agora a dúvida, como chamo o metodo getList(int ID) para retornar os valores nos jTextField?
// tipo tfNome.setText(usuario.getList(id)); [/quote]

Assim:

[code]UsuarioDAO dao = new UsuarioDAO();
Usuario usuario = dao.getList(id) // na verdade bem que este metodo getList poderia ser renomeado visto que é apenas um usuario.

tfNome.setText(usuario.getNome());
//e assim pros demais…
[/code]

Espero ter ajudado!

Sandro

[quote=SandroSoftwares]Bom,
Primeiro lugar: Se você está fazendo uma pesquisa usando o id (chave primaria no banco) por que está usando uma lista??? só vai retornar um usuário…
Poderia somente usar a classe usuario ao invés de uma lista de usuarios.

[code] public Usuario getList(int iD){
try{
Usuario usuario = new Usuario();
PreparedStatement stmt = connection.prepareStatement(“select * from usuarios where id=?”);
stmt.setInt(1, iD);
ResultSet rs = stmt.executeQuery();

        if(rs.next()){  
             
            usuario.setUsuario(rs.getString("usuario"));  
            usuario.setSenha(rs.getString("senha"));  
            usuario.setNome(rs.getString("nome"));  
            usuario.setEmail(rs.getString("email"));  
            usuario.setCPF(rs.getString("cpf")); //adicionei este... por que vc não tinha retornado ele logo aqui???

        } 

}catch (SQLException ex){

}

return usuario; //retornando o usuario escolhido pelo iD
}[/code]

[quote]
// Agora a dúvida, como chamo o metodo getList(int ID) para retornar os valores nos jTextField?
// tipo tfNome.setText(usuario.getList(id)); [/quote]

Assim:

[code]UsuarioDAO dao = new UsuarioDAO();
Usuario usuario = dao.getList(id) // na verdade bem que este metodo getList poderia ser renomeado visto que é apenas um usuario.

tfNome.setText(usuario.getNome());
//e assim pros demais…
[/code]

Espero ter ajudado!

Sandro[/quote]

Sandro fiz da forma que você falou e deu tudo certo \o/. Muito obrigado!
Estava implementando um JComboBox, e fiz dessa maneira:

[code]
tipo = new TipoDAO();
jbTipo = new JComboBox();
int j = tipo.getList().size();
for(int i = 0; i<j; i++){
jbTipo.addItem(tipo.getList().get(i));

	}[/code]

Até ai tudo bem, os dados estão sendo carregados no combobox, porém quando chamo os dados da tabela, o combobox não seta, fim dessa forma:

jbTipo.setSelectedItem(usuario.getTipo());

Mas ele não aparece com o novo dado, apenas com os dados que foram carregados anteriormente.
???

E mais uma vez obrigado pela atenção, vou ficar tentando aqui!