Quando efetuo um cadastro e em seguida uma exclusão do objeto cadastrado o mesmo exclui do banco de dados mas não atualiza a tabela pro usuário (não exclui a linha da tabela). Porém, ao realizar um cadastro e em seguida fechar o JInternalFrame e abrir novamente, realizando a exclusão, ele irá exclui da tabela. Alguém sabe o motivo disto ocorrer ?
AbstractTableModel
package br.com.clinica.model.modelotabela;
import br.com.clinica.model.objetos.Funcionario;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class FuncionarioModeloTabela extends AbstractTableModel {
private ArrayList<Funcionario> funcionarios = new ArrayList();
private String[] nomeColuna = {"ID", "Nome", "Idade", "CPF", "Sexo"};
@Override
public int getRowCount() {
return this.funcionarios.size();
}
@Override
public int getColumnCount() {
return this.nomeColuna.length;
}
@Override
public String getColumnName(int column) {
return this.nomeColuna[column];
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return this.funcionarios.get(rowIndex).getId();
case 1:
return this.funcionarios.get(rowIndex).getNome();
case 2:
return this.funcionarios.get(rowIndex).getIdade();
case 3:
return this.funcionarios.get(rowIndex).getCpf();
case 4:
return this.funcionarios.get(rowIndex).getSexo();
}
return null;
}
@Override
public void setValueAt(Object valor, int rowIndex, int columnIndex) {
switch (columnIndex) {
case 1:
this.funcionarios.get(rowIndex).setNome((String) valor);
break;
case 2:
this.funcionarios.get(rowIndex).setIdade(Integer.parseInt((String) valor));
break;
case 3:
this.funcionarios.get(rowIndex).setCpf((String) valor);
break;
case 4:
this.funcionarios.get(rowIndex).setSexo((String) valor);
break;
}
}
public void addRow(Funcionario funcionario) {
this.funcionarios.add(funcionario);
this.fireTableDataChanged();
}
public void removeRow(int linha) {
this.funcionarios.remove(linha);
this.fireTableRowsDeleted(linha, linha);
}
}
Controller
public void btnExcluir() {
FuncionarioDAO repositorio = new FuncionarioDAO();
if (this.view.getTabelaFuncionario().getSelectedRow() != - 1) {
int linha = this.view.getTabelaFuncionario().getSelectedRow();
long codigo = Long.parseLong(String.valueOf(this.view.getTabelaFuncionario().getValueAt(linha, 0)));
Funcionario funcionario = repositorio.listarPorId(codigo);
switch (JOptionPane.showConfirmDialog(null, " Tem certeza que deseja excluir ? ", "Confirmar exclusão", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE)) {
case 0:
this.modelo.removeRow(linha);
repositorio.excluir(funcionario);
break;
case 1:
break;
}
} else {
JOptionPane.showMessageDialog(null, "Escolha um funcionário");
}
}
view
private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
this.controller.btnExcluir();
}