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.
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!
S
SandroSoftwares
Charles Eduardo
ai vc vai ter que pegar esse id e fazer uma consulta ao banco retornando o cpf
linhaSelecionada=jTableClientes.getSelectedRow();idClienteSelecionado=Integer.parseInt(""+modelo.getValueAt(linhaSelecionada,0));//codigo Id na coluna 1 da tabelatry{ClienteDaodao=newClienteDao();ResultSetcpf=dao.getCPF(idContatoSelecionado);if(cpf.next()){jTextFieldCpf.setText(cpf.getString("cpf"));}}catch(SQLExceptionex){Logger.getLogger(JFrameCliente.class.getName()).log(Level.SEVERE,null,ex);}
C
CharlesEduardo
SandroSoftwares:
Charles Eduardo
ai vc vai ter que pegar esse id e fazer uma consulta ao banco retornando o cpf
linhaSelecionada=jTableClientes.getSelectedRow();idClienteSelecionado=Integer.parseInt(""+modelo.getValueAt(linhaSelecionada,0));//codigo Id na coluna 1 da tabelatry{ClienteDaodao=newClienteDao();ResultSetcpf=dao.getCPF(idContatoSelecionado);if(cpf.next()){jTextFieldCpf.setText(cpf.getString("cpf"));}}catch(SQLExceptionex){Logger.getLogger(JFrameCliente.class.getName()).log(Level.SEVERE,null,ex);}
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 jTextFieldintid=Integer.parseInt(tfId.getText()); // vai ser utilizado para passagem de parâmetro no método getList(int iD) da classe UsuarioDAO//Agoraadúvida,comochamoometodogetList(intID)pararetornarosvaloresnosjTextField?
//tipotfNome.setText(usuario.getList(id));
Mais uma vez obrigado pela resposta, já tentei de várias forma mais não consegui ainda.
Tem alguma ideia?
S
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.
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
}
// Agora a dúvida, como chamo o metodo getList(int ID) para retornar os valores nos jTextField?
// tipo tfNome.setText(usuario.getList(id));
Assim:
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...
Espero ter ajudado!
Sandro
C
CharlesEduardo
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.
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
}
// Agora a dúvida, como chamo o metodo getList(int ID) para retornar os valores nos jTextField?
// tipo tfNome.setText(usuario.getList(id));
Assim:
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...
Espero ter ajudado!
Sandro
Sandro fiz da forma que você falou e deu tudo certo \o/. Muito obrigado!
Estava implementando um JComboBox, e fiz dessa maneira: