Sair de um laço quando apertar "Cancelar" no JOptionPane.showInputDialog

4 respostas
java
I

Tenho um seguinte laço:

veri = false;
Date a1, a2;
do {
    try {
        a1 = Date.valueOf(JOptionPane.showInputDialog(null, "Digite uma data\nExemplo: "2018-03-30", "");
        veri = true;
    } catch (Exception e) {
        JOptionPane.showMessegeDialog(null, "Digite uma data válida");
    }
} while (veri == false);

Gostaria de saber como faço para sair desse laço caso eu aperte “Cancelar” no JOptionPane.

4 Respostas

S

implementa um listener dentro do while e coloca um break dentro do listener

I

Você consegue pensar em outra solução para isto?

R

Você já procurou testar o que o showInputDialog retorna quando se clica em cancelar?

String resp = JOptionPane.showInputDialog(null, "Digite uma data\nExemplo:  \"2018-03-30\"", "");
System.out.println(resp);

Sempre leia o tipo de retorno que seu método te dá, já parou para pensar que ao clicar em Cancelar você pode ter uma String nula ou vazia?

A partir daí, você pode tomar outra decisão…

if (resp == null || resp.isEmpty()) {
   break;
} else {
   a1 = Date.valueOf(resp);
   veri = true;
}
I

Funcionou perfeitamente, obrigado.
Eu tinha feito várias pesquisar e sabia que ele retornava null, mas toda vez que eu tentava fazer esse tratamento acabava não dando certo por eu tentar fazer com a variável Date.
Obrigado novamente.

Criado 30 de março de 2018
Ultima resposta 31 de mar. de 2018
Respostas 4
Participantes 3