Finalmente consegui implementar uma AbstractTableModel!!
ALELUIA!!!
Realmente sinto ter perdido tanto tempo com o DefaultTableModel, mas enfim…
Estou com um problema clássico de quem acaba de aprender algo: Não consigo compreender como devo fazer para que após a alteração na tabela seja feita ( listener ), o meu banco de dados seja alterado também.
A coluna da tabela eu consegui fazer e está alterando corretamente, mas não entendi como vou fazer o UPDATE.
Vi o ViniGodoy mencionando que seria na view, mas eu ainda não consegui.
Uma outra dúvida seria: montei a tabela, blz, mas não consigo saber qual é o ID dela no meu banco, mas no Select eu pego o ID também…
Enfim galera, sei que é coisa de Noob, mas ALELUIA!! Já saí da DefaultTableModel!!!
Obrigado pela ajuda!
Alguém aí pessoal??
Alguém tem algum material ou link que eu possa ver??
Na table model, no método setValueAt, seto o novo valor no objeto e chamo um método para alterar no banco:
public void setValueAt(Object newValue, int rowIndex, int columnIndex) {
Contato contato = dados.get(rowIndex);
if (columnIndex == COL_NOME) contato.getUsuario().setNome((String) newValue);
if (columnIndex == COL_CELULAR) contato.getUsuario().setTelefone((String) newValue);
if (columnIndex == COL_RAMAL) contato.getUsuario().setRamal((String) newValue);
if (columnIndex == COL_EMAIL) contato.getUsuario().setEmail((String) newValue);
fireTableCellUpdated(rowIndex, columnIndex);
}
```
O método que altera o banco fiz assim:
```
public void fireTableCellUpdated(int row, int column) {
try {
Contato contato = getRow(row);
new ContatoController().atualizar(contato);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao atualizar contato.");
}
}
```
Dessa forma, quando o cara edita um valor na célula e dá um ENTER, um update é feito no banco em seguida.
Não sei se é a melhor forma, pq tem anos que implementei esse código, mas funcionou.