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.
Atualizar uma JTable -
A
4 Respostas
D
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.
S
revalidate() é para reajustar o layout dos componentes.
Para atualizar o conteúdo da JTable use o método fireTableDataChanged() do AbstractTableModel.
A
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.
A
Solucao aceita
Obrigado pela ajuda de todos.
Criado 15 de outubro de 2023
Ultima resposta 18 de out. de 2023
Respostas 4
Participantes 3
Alura O que é Python? — um guia completo para iniciar nessa linguagem de programação Acesse agora o guia sobre Python e inicie sua jornada nessa linguagem de programação: o que é e para que serve, sua sintaxe e como iniciar nela!
Casa do Codigo Back-end Java: Microsservicos, Spring Boot e Kubernetes Por Eduardo Felipe Zambom Santana — Casa do Codigo