I'm having the following problem, on first run my DefaultTableModel loads normally as can be seen below in red:
Aftermakingaregistration,changeordeletiononce,thetableupdatesnormally,butwhenIruntheseoperationsthesecondtimeon,Igetthefollowingerror:
HowcanIsolvethisproblem?
ThisismyBean:
publicclassEdicao{privateStringisbn;privatedoublevalor;privateIntegerqtde;privateIntegernumPag;privateIntegerano;privateLivrolivro;privateEditoraeditora;privateIntegeraddQtde;publicvoidsetIsbn(Stringisbn){this.isbn=isbn;}publicStringgetIsbn(){returnisbn;}publicvoidsetValor(doublevalor){this.valor=valor;}publicdoublegetValor(){returnvalor;}publicvoidsetQtde(Integerqtde){this.qtde=qtde;}publicIntegergetQtde(){returnqtde;}publicvoidsetAno(Integerano){this.ano=ano;}publicIntegergetAno(){returnano;}publicvoidsetLivro(Livrolivro){this.livro=livro;}publicLivrogetLivro(){returnlivro;}publicvoidsetNumPag(IntegernumPag){this.numPag=numPag;}publicIntegergetNumPag(){returnnumPag;}publicvoidsetEditora(Editoraeditora){this.editora=editora;}publicEditoragetEditora(){returneditora;}publicvoidsetAddQtde(IntegeraddQtde){this.addQtde=addQtde;}publicIntegergetAddQtde(){returnaddQtde;}}
ThisismyDaomethodthatliststheissues
publicList<Edicao>listarEdicao(){Connectionconn=null;PreparedStatementps=null;ResultSetrs=null;Stringsql="";
Livro livro = null;
Editora editora = null;
EditoraControle editoraControl = new EditoraControle();
LivroControle livroControl = new LivroControle();
conn = Conexao.getConexao();
sql = "SELECT edic_isbn, edic_valor, edic_qtde, edic_numpag, edic_ano, edic_livro, edic_editora\n" +
"FROM public.edicao";
List<Edicao> listaEdicao = new ArrayList<Edicao>();
Edicao edicao = null;
livro = null;
editora = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
edicao = new Edicao();
edicao.setIsbn(rs.getString("edic_isbn"));
edicao.setValor(rs.getDouble("edic_valor"));
edicao.setQtde(rs.getInt("edic_qtde"));
edicao.setNumPag(rs.getInt("edic_numpag"));
edicao.setAno(rs.getInt("edic_ano"));
livro = livroControl.consultar(rs.getInt("edic_livro"));
editora = editoraControl.consultar(rs.getString("edic_editora"));
edicao.setLivro(livro);
edicao.setEditora(editora);
listaEdicao.add(edicao);
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("Erro na Consulta !!"+e.getMessage());
}
return listaEdicao;
}
This is my CONTROL
public class EdicaoControle {
Edicao edicao = new Edicao();
EdicaoDao edicaoDao = new EdicaoDao();
public boolean salvar(Edicao edicao){
boolean salvou = edicaoDao.salvar(edicao);
return salvou;
}
public Edicao consultar(String cnpj){
edicao = edicaoDao.consultar(cnpj);
return edicao;
}
public boolean alterar(Edicao edicao){
boolean alterou = edicaoDao.alterar(edicao);
return alterou;
}
public boolean excluir (Edicao edicao){
boolean excluiu = edicaoDao.excluir(edicao);
return excluiu;
}
public List<Edicao> listar(){
List<Edicao> lista = new ArrayList<Edicao>();
lista = edicaoDao.listarEdicao();
return lista;
}
}
This is method in VIEW responsible for loading the table
public void preencherTabelaEdicao(){
Tabela_Edicao.getColumnModel().getColumn(0).setPreferredWidth(80);
Tabela_Edicao.getColumnModel().getColumn(1).setPreferredWidth(220);
Tabela_Edicao.getColumnModel().getColumn(2).setPreferredWidth(4);
Tabela_Edicao.getColumnModel().getColumn(3).setPreferredWidth(5);
Tabela_Edicao.getColumnModel().getColumn(4).setPreferredWidth(5);
Tabela_Edicao.getColumnModel().getColumn(5).setPreferredWidth(7);
Tabela_Edicao.getColumnModel().getColumn(6).setPreferredWidth(220);
DefaultTableModel modelo = (DefaultTableModel)Tabela_Edicao.getModel();
modelo.setNumRows(0);
List<Edicao> listaEdicao = new ArrayList<Edicao>();
listaEdicao = edicaoControl.listar();
try{
for(Edicao e: listaEdicao){
modelo.addRow(new Object[]{e.getIsbn(), e.getLivro().getLivnome(),e.getAno(),e.getNumPag(),e.getQtde(),e.getValor(),
e.getEditora().getEdit_nome()});
}
}catch(Exception erro){
JOptionPane.showMessageDialog(null, "A tabela EDIÇÃO não pôde ser carregada");
}
}
After saving, changing and deleting I just call the method that loads the table, that is, I call the fillTextType () method.