Olá pessoal,
Estou usando um TableModel na minha aplicação, mas não consigo atualizar os dados na JTable em tempo de execução. Tentei usar o método fireTableDataChanged() pra atualizar mas não consegui.
Classe do TableModel
public class ClienteAbstractTable extends AbstractTableModel {
private ArrayList dados = new ArrayList();
private String[] colunas;
public ClienteAbstractTable(ArrayList dados, String[] colunas) {
setDados(dados);
setColunas(colunas);
}
public ClienteAbstractTable() {
}
@Override
public String getColumnName(int coluna) {
return getColunas()[coluna];
}
@Override
public int getRowCount() {
return getDados().size();
}
@Override
public int getColumnCount() {
return getColunas().length;
}
@Override
public Object getValueAt(int dados, int coluna) {
Object[] dadosLinhas = (Object[])getDados().get(dados);
return dadosLinhas[coluna];
}
public void atualizarTabela(Cliente c) {
this.dados.add(c);
this.fireTableDataChanged();
}
public ArrayList getDados() {
return dados;
}
public void setDados(ArrayList dados) {
this.dados = dados;
}
public String[] getColunas() {
return colunas;
}
public void setColunas(String[] colunas) {
this.colunas = colunas;
}
}
Evento do JButton
private void btnCAEditarActionPerformed(java.awt.event.ActionEvent evt) {
Cliente cli = new Cliente();
int i = 0;
try{
cli.setCPF(txtfCAInformarCPF.getText());
i = cbCAEditar.getSelectedIndex();
switch (cbCAEditar.getSelectedIndex()) {
case 1:
cli.setNome(txtCAEditar.getText());
lbCAAviso3.setText("Novo Nome");
break;
case 2:
cli.setSobrenome(txtCAEditar.getText());
lbCAAviso3.setText("Novo Sobrenome");
break;
case 3:
cli.setDtNascimento(txtCAEditar.getText());
lbCAAviso3.setText("Nova Data de Nascimento");
break;
case 4:
cli.setEndereco(txtCAEditar.getText());
lbCAAviso3.setText("Novo Endereço");
break;
case 5:
cli.setNumResidencia(txtCAEditar.getText());
lbCAAviso3.setText("Novo Numero de residência");
break;
case 6:
cli.setBairro(txtCAEditar.getText());
lbCAAviso3.setText("Novo Bairro");
break;
case 7:
cli.setCidade(txtCAEditar.getText());
lbCAAviso3.setText("Nova Cidade");
break;
case 8:
cli.setUF(txtCAEditar.getText());
lbCAAviso3.setText("Novo Estado");
break;
case 9:
cli.setTelefone1(txtCAEditar.getText());
lbCAAviso3.setText("Novo Telefone");
break;
case 10:
cli.setTelefone2(txtCAEditar.getText());
lbCAAviso3.setText("Novo Telefone");
break;
default:
break;
}
ClienteDAO.atualizar(cli, i);
tabelaCliente.atualizarTabela(cli);
/* tabela.preencherTabelaCliente("SELECT C.CPF, C.nome, C.sobrenome, C.nascimento, E.endereco, "
+ "E.num, E.bairro, E.cidade, E.estado, F.fone1, F.fone2 FROM cliente C "
+ "INNER JOIN endereco_c E on E.Cliente_CPF = C.CPF "
+ "INNER JOIN fone_c F on F.Cliente_CPF = C.CPF", tbCPesquisa); */
JOptionPane.showMessageDialog(null, "Registro de cliente atualizado com sucesso. ");
}catch(Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao tentar atualizar dados do cliente.");
}
Só consigo atualizar o JTable em tempo de execução quando chamo denovo o SQL