Java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_
5 respostas
A
AndrewAguiar
Olá pessoal.
Me deparei com o seguinte erro
java.lang.IllegalArgumentException: defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, or DISPOSE_ON_CLOSE
at javax.swing.JDialog.setDefaultCloseOperation(Unknown Source)
na linha de codigo que eu seto o DefaultCloseOperation eu passo o valor “3” que na JDialog corresponde a EXIT_ON_CLOSE, aqui este erro não ocorre porém ocorre no cliente.
Desconfio que seja a versão do Java instalado e que nesta versão a constante EXIT_ON_CLOSE tenha outro valor.
Para evitar problemas como esse use a constante, nunca o valor literal.
Isso também torna o seu código mais legível.
J
jcvijr
Cara acredite…
No Java 1.6 esse EXIT_ON_CLOSE não funciona! Eu estava desenvolvendo uma aplicação com Java 1.5, mandei para outra pessoa testar e ela me reportou que não abria nenhuma tela… Porém na minha funcionava.
Tomem cuidado. Utilizei DISPOSE_ON_CLOSE no lugar
B
brunogamacatao
O problema de usar DISPOSE_ON_CLOSE quando se quer matar a aplicação é que apesar da janela ser fechada a JVM continua rodando. Cara, com a versão da JVM 1.6 que estou usando, o EXIT_ON_CLOSE funciona sem problemas. Porém, caso aí não funcione de jeito nenhum, você pode tentar uma abordagem “alternativa”, como por exemplo fechar a janela na “marra” reescrevendo o código que trata o evento quando o usuário tenta fechar a janela:
...frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);frame.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEventwe){//De repente aqui você pode colocar até um diálogo de confirmação perguntando //se o usuário deseja ou não fechar a janela.System.exit(0);}});...
A
AndrewAguiar
O mais estranho é que a minha versão do java que estou testando é a 1.4.2 igual a do cliente.
M
maior_abandonado
tenta coloca o exit_on_close igual o vinigodoy falo, caso não de certo vc pode fazer diferente…
coloque o hide_on_close, pegue o evento da janela sendo fechada, e quando isso acontecer da um system.exit(0)…
não é bem o usual mais ao menos vai força o fechamento igual o exit_on_close, ja q vc não tem ele ai…