Boa noite, estou com um problema no retorno de um cadastro, eu tenho uma tela que tem uma JTable, criada através de um AbstractTableModel, essa tela eu chamo outra aonde eu adiciono um novo registro por exemplo, quando eu volto eu gostaria de atualizar essa tabela com esse novo registro, mais não estou conseguindo, tentei utilizar o .revalidate() e não funcionou, será que alguém podeia me dar um exemplo.
Você pode começar mostrando seu código, ou melhor, uma fração dele, um exemplo do que você está fazendo que reproduza o comportamento descrito.
revalidate()
é para reajustar o layout dos componentes.
Para atualizar o conteúdo da JTable
use o método fireTableDataChanged()
do AbstractTableModel
.
Eu tenho essa função que criei para criara tabela.
public static void Cria_Tabela() {
try {
conn = ConnectionFactory.getConnection();
sql = "SELECT * FROM maquina "
+ "WHERE maq_ativo = true " + "AND maq_delete <> '*';";
stmt = conn.prepareStatement(sql);
stmt.execute();
rs = stmt.executeQuery(sql);
ArrayList<Maquina> maquina = new ArrayList<>();
while (rs.next()) {
Maquina maq = new Maquina(
rs.getInt("maq_codigo"),
rs.getString("maq_placa"),
rs.getString("maq_descricao"),
rs.getString("maq_ip"),
rs.getString("maq_mac")
);
maquina.add(maq);
}
stmt.close();
conn.close();
painel3.setLayout(new FlowLayout(FlowLayout.LEFT));
mmdlMaquina = new atmMaquina(maquina);
tblMaquina = new JTable(mmdlMaquina);
scpMaquina = new JScrollPane(tblMaquina);
painel3.add(scpMaquina);
painelTabela.setLayout(new FlowLayout(FlowLayout.LEFT));
painelTabela.add(painel3);
} catch (Exception e) {
e.printStackTrace();
}
}
depois dentro da primeira tela eu chamo ela e dai entro em outra tela aonde faço a inclusão na tabela e dai que ela não atualiza, segue abaixo o action do botão.
btnOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
Date dData = new Date();
Calendar cdData = Calendar.getInstance();
cdData.setTime(dData);
cdData.add(Calendar.DATE, 0);
dData = cdData.getTime();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String sData = df.format(dData);
if (rdbAtivo.isSelected()) {
bAtivo = true;
} else if (rdbInativo.isSelected()) {
bAtivo = false;
}
switch (iTipo) {
case 1:
sData = sData.replaceAll("/", "");
// Incluir
try {
MaquinaDAO maqdao = new MaquinaDAO();
Maquina maq = new Maquina(0, "", "", "", "");
maq.setMAQ_CODIGO(Integer.parseInt(txtCodigo.getText()));
maq.setMAQ_PLACA(txtPlaca.getText());
maq.setMAQ_DESCRICAO(txtDescricao.getText());
maq.setMAQ_IP(txtIP.getText());
maq.setMAQ_MAC(txtMAC.getText());
maq.setMAQ_FOTO(txtEndFoto.getText());
maq.setMAQ_ATIVO(bAtivo);
maq.setMAQ_DTATIVO(sData);
maq.setMAQ_USUARIOCRIACAO(iUsuario);
maq.setMAQ_DTCRIACAO(sData);
maq.setMAQ_USUARIOALTERA(0);
maq.setMAQ_DTALTERACAO("");
maq.setMAQ_USUARIODELETE(0);
maq.setMAQ_DTDELETE("");
maq.setMAQ_DELETE(" ");
maqdao.Inserir(maq);
try {
ifrmMaquina ifrmMaquina = new ifrmMaquina();
getParent().add(ifrmMaquina);
ifrmMaquina.setVisible(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dispose();
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
break;
case 2:
// Alterar
try {
MaquinaDAO maqdao = new MaquinaDAO();
Maquina maq = new Maquina(iMaqCodigo, sPlaca, sDescricao, sIP, sMAC);
maq.setMAQ_CODIGO(Integer.parseInt(txtCodigo.getText()));
maq.setMAQ_PLACA(txtPlaca.getText());
maq.setMAQ_DESCRICAO(txtDescricao.getText());
maq.setMAQ_IP(txtIP.getText());
maq.setMAQ_MAC(txtMAC.getText());
maq.setMAQ_FOTO(txtEndFoto.getText());
maq.setMAQ_ATIVO(bAtivo);
maq.setMAQ_DTATIVO(sData);
maq.setMAQ_USUARIOCRIACAO(iUsuarioCriacao);
maq.setMAQ_DTCRIACAO(sDtCriacao);
maq.setMAQ_USUARIOALTERA(iUsuario);
maq.setMAQ_DTALTERACAO(sData);
maq.setMAQ_USUARIODELETE(0);
maq.setMAQ_DTDELETE("");
maq.setMAQ_DELETE(" ");
maqdao.Alterar(maq);
dispose();
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
break;
case 3:
// Excluir
try {
MaquinaDAO maqdao = new MaquinaDAO();
Maquina maq = new Maquina(iMaqCodigo, sPlaca, sDescricao, sIP, sMAC);
maq.setMAQ_USUARIODELETE(iUsuario);
maq.setMAQ_DTDELETE(sData);
maq.setMAQ_DELETE("*");
maqdao.Excluir(maq);
dispose();
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
break;
case 4:
// Visualizar
break;
default:
break;
}
}
});
aqui dentro eu além de incluir eu altero, visualizo e excluo o registro.
Obrigado pela ajuda de todos.