Tratar o setDefaultCloseOperation em um JDialog

3 respostas
B

Pessoal,

Estou precisando tratar o fechamento da tela (JDialog) pelo “X”.
Por exemplo: cadastro de cliente, a pessoa esta criando um novo cadastro, e resolve fechar a janela sem cancelar a ação do novo cadastro
estou precisando tratar essa ação para que se o cadastro estiver aberto, o usuário não poderá fechar.

  • estou abrindo a tela do JDialog pelo .show()
  • meu setDefaultCloseOperation está como Dispose();

ps: tratamento que preciso, pode ser pela verificação de um campo aberto (código), tanto quando o cadastro é aberto o campo código tambem é aberto, caso o cadastro não é iniciado o campo “código” permanece fechado

3 Respostas

Danillo_Moreno

E ae???

Ao invés de chamar o dispose() no setDefaultCloseOperation(), chama um método de verificação que você vai criar…

Por exemplo, verificaFechamento();

if(pode fechar sem problemas)
dispose();
else
faz o tratamento necessário
B
Danillo_Moreno:
E ae???

Ao invés de chamar o dispose() no setDefaultCloseOperation(), chama um método de verificação que você vai criar...

Por exemplo, verificaFechamento();

if(pode fechar sem problemas)
dispose();
else
faz o tratamento necessário

Danillo,

criei este metodo:

public int fechaJanela(){
        if(painelCorStatus.getBackground() == Color.GREEN){
            JOptionPane.showMessageDialog(null, "Cupom Fiscal Aberto");
            return javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE;
        }else{
            return javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
        }
    }

e chamei o metodo na propriedade(netbeans) do setDefaultCloseOperation na opção "codigo personalizado"
porem eu debuguei o processo, quando eu abro a tela "tela.show()" ele ja verifica esse metodo meu
ao inves de verificar somente quando clicar no "X" para fechar.

JoatanGuj
bY-sqT:
Danillo_Moreno:
E ae???

Ao invés de chamar o dispose() no setDefaultCloseOperation(), chama um método de verificação que você vai criar...

Por exemplo, verificaFechamento();

if(pode fechar sem problemas)
dispose();
else
faz o tratamento necessário

Danillo,

criei este metodo:

public int fechaJanela(){
        if(painelCorStatus.getBackground() == Color.GREEN){
            JOptionPane.showMessageDialog(null, "Cupom Fiscal Aberto");
            return javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE;
        }else{
            return javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
        }
    }

e chamei o metodo na propriedade(netbeans) do setDefaultCloseOperation na opção "codigo personalizado"
porem eu debuguei o processo, quando eu abro a tela "tela.show()" ele ja verifica esse metodo meu
ao inves de verificar somente quando clicar no "X" para fechar.

tenta colar seu codigo no evento windowClosing. click com o botão direito do mouse na jFrame>Eventos> e adiciona teu codigo no evento WindowClosing.

Criado 8 de setembro de 2011
Ultima resposta 8 de set. de 2011
Respostas 3
Participantes 3