Tratar o setDefaultCloseOperation em um JDialog

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

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

[quote=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();

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

[/code][/quote]

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.

[quote=bY-sqT][quote=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();

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

[/code][/quote]

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.[/quote]

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.

1 curtida