Galera quem puder me tirar essa dúvida, procurei em vários tópicos e outros locais e não encontrei a resposta. Desde já muito obrigado pela ajuda.
No projeto preciso criar uma tabela e jogar os dados de dois ou mais objetos nessa tabela, criei o método com o select (inner join nas tabelas) que preciso na classe DAO, jogo na tabela e até ai tudo bem, o resultado está ok na jtable, o problema é na hora de alterar esses registros que são outros objetos de outras classes, no meu modo de pensar toda vez que eu altero um registro não é necessário recarregar a lista toda novamente e sim apenas atualizar aquela linha na jtable e no banco, toda vez que eu atualizo da erro na jtable e no banco está ok, criei a tabela com extends da AbstractTableModel e os métodos, mas estou enrolado nisso, alguém tem uma luz?
ou o método para atualizar?
De forma mais simplificada, tenho um cadastro de clientes com os campos a serem preenchidos e o combobox de estado a ser selecionado, quando clico no botão Atualizar os campos de preenchimentos atualizam normalmente na jtable, mas quando mudo a opção do combobox da o erro de NullPointerExceptione não atualiza na jtable mas atualiza no banco.
//MÉTODO PARA ATUALIZAR UM REGISTRO DO BANCO - CLASSE DAO
public void update(Pessoa pessoa, Uf uf) {
try {
String sql = "update tbl_pessoa set nome_pessoa = ?, idade_pessoa = ?, cod_uf = ? where cod_pessoa = ?";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, pessoa.getNome());
stmt.setInt(2, pessoa.getIdade());
stmt.setObject(3, uf.getCodUf());
stmt.setInt(4, pessoa.getCodigo());
stmt.execute();
stmt.close();
} catch (SQLException error) {
throw new RuntimeException(error);
} finally {
try {
connection.close();
} catch (SQLException ex) {
Logger.getLogger(PessoaDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
}//FIM DO MÉTODO ATUALIZAR
private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {
// BOTÃO EDITAR
try {
int linha = this.TabelaPessoa.getSelectedRow();
Pessoa novaPessoa = new Pessoa();
novaPessoa.setNome(txtNome.getText());
novaPessoa.setIdade(Integer.parseInt(txtIdade.getText()));
Uf uf = (Uf)Cbestado.getSelectedItem();
novaPessoa.setCodigo(Integer.parseInt(txtCodigo.getText()));
PessoaDAO dao = new PessoaDAO();
dao.update(novaPessoa, uf);
modelo.setValueAt(novaPessoa, linha);
JOptionPane.showMessageDialog(null, "Registro alterado com sucesso!");
//BOTÕES NOVO, SALVAR, ATUALIZAR E EXCLUIR
btnNovo.setEnabled(true);
btnSalvar.setEnabled(false);
btnEditar.setEnabled(false);
btnExcluir.setEnabled(false);
//FECHAR CAMPOS DO FORM
fecharCampos();
} catch (Exception error) {
throw new RuntimeException(error);
}
}
//MÉTODO PARA ATUALIZAR A TABELA, ATRVÉS DO OBJ E SUA RESPECTIVA LINHA DA LISTA
public void setValueAt(Pessoa aValue, int rowIndex){
linhas.set(rowIndex, aValue);
fireTableRowsUpdated(rowIndex, rowIndex);
}