Indo e vindo do JFrame para JDialog

Gnt, estou programando uma janela para cadastro de pessoas. A janela principal está em JFrame e, ao clicar no botão “Criar Funcionário”, eu estanciei uma classe para abrir um JDialog e em seguida ative o jframe.setEnable(). Até aí tudo bem. Só que após criar o funcionário, usei o dispose() no JDialog mas não consegui reativar o JFrame inicial. Como eu faço para reativa-la?

Se eu entendi direito, você quer que se o JDialog estiver aberto, não seja possível interagir com o JFrame… Nesse caso não seria melhor usar o JDialog como modal?
Aí não seria necessário lidar com enables etc

1 curtida

Tira esse setEnabled() e deixa o jDialog.setModal(true).

1 curtida

Deu certo, mas existe 2 problemas:

  • Ao criar um novo funcionário e fechar a janela JDialog, a tela de JFrame não é atualiza. Como eu faço para ela iniciar um método depois de eu fechar o JDialog?
  • continuo permitindo que o cliente acesse a tela JFrame mesmo com o JDialog aberta. Eu gostaria q ela estivesse bloqueada para ação caso a janela JDialog esteja aberta.

O meu método na JFrame que chama a JDialog é este:

public void cadastrarLocal () throws ClassNotFoundException, SQLException {
    TelaCriarLocal tela = new TelaCriarLocal(null, true);
    tela.setLocationRelativeTo(null);
    tela.setVisible(true);
    tela.setModal(true);

O método no JDialog que finaliza o cadastro é:

public void cadastrarLocal() throws ClassNotFoundException {
    sql = "Insert into localidades(locais) values(?)";

    try {
        pst = con.prepareStatement(sql);
        pst.setString(1, txtLocal.getText());
        pst.execute();
        
        dispose();
           
    } catch (SQLException error) {
        JOptionPane.showMessageDialog(null, "Erro ao tentar criar o local\n" + error.getMessage().toLowerCase());
    }
}