Retorno de showConfirmDialog (Era Conversão)

5 respostas
A

Estou ainda começando no Java.

Posso declarar uma variável tipo Boolean que terá seu valor atribuido através da opção showConfirmDialog??? Para teste com o resultado dessa atribuição quais valores devo usar?? 0 e 1???

Desde já agradeço a ajuda de todos.

5 Respostas

T

http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JOptionPane.html#showConfirmDialog(java.awt.Component,%20java.lang.Object,%20java.lang.String,%20int) lhe diz que o valor de retorno dele é JOptionPane.YES_OPTION (sei lá qual é o valor numérico) ou JOptionPane.NO_OPTION (nem tenho idéia). Use os valores simbólicos.

Faça algo como

int opcao = JOptionPane.showConfirmDialog(null,
            "Escolha sim ou não", "Sim ou não?", JOptionPane.YES_NO_OPTION);
boolean flag;
flag = opcao == JOptionPane.YES_OPTION;
cassio

Não, o JOptionPane.showConfirmDialog retorna somente um inteiro, não boolean. sào tipos diferentes, não tem como associar diretamente assim.
Você tem que usar um int mesmo para pegar o retorno do método.
Mas acho que o mínimo para o showConfirmDialog sào três opções, não?! Sim, Não e Cancelar… eu acho… talvez esteja enganado.
Dai vc terá que avaliar com inteiro mesmo… Porme a classe já fornece umas constantes pré-definidas!

JOptionPane.OK_OPTION
JOptionPane.CANCEL_OPTION

etc…
Dá uma olhada na api!

Abraço!

A

Cassio,

Entendi. Mas tenho o seguinte:

int escolha = JOptionPane.showConfirmDialog(null,“Deseja tentar novamente?”);

O retorno é 0 ou 1???

if (escolha =0){

System.exit(0);

}

Tá dando o erro: Type mismatch: cannot convert from int to boolean.

Outra dúvida é que se atender a condição como faço pra dar início a aplicação novamente???

T

Eu lhe respondi acima que não sei se é zero ou um, e isso não quero saber.
Só sei que é uma das constantes: JOptionPane.YES_OPTION,
JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION. Se é zero ou um ou 20 ou 300 ou -1, só olhando no código-fonte do Java.
Acostume-se a usar as constantes, para que seu código fique mais claro.
Além disso, a comparação é com “==”, não “=” (que é o que está provocando o tal do “type mismatch” no seu caso.).

Luiz_Gustavo
public static int dialogoConfirmacao(JPanel chamador, String mensagem, String titulo, String opcaoUm, String opcaoDois){
        
        int opcao = 0;
                
        Object[] options = { opcaoUm, opcaoDois };            
        Object msg = mensagem;
        JOptionPane pane = new JOptionPane(msg, JOptionPane.QUESTION_MESSAGE, 
                JOptionPane.DEFAULT_OPTION, null, options, options[0]);            
        JDialog dialog = pane.createDialog(chamador, titulo);
        dialog.setVisible(true);     
        Object selectedValue = pane.getValue();                

        for(int counter = 0, maxCounter = options.length;
                counter < maxCounter; counter++) {

            if(options[counter].equals(selectedValue))
                opcao =  counter;
        }    
        
        return opcao;
    }

Pra esse método, se o retorno for “0”, é porque a pessoa escolheu a primeira opção, caso contrário é “1”.

[]'s

Criado 26 de junho de 2006
Ultima resposta 26 de jun. de 2006
Respostas 5
Participantes 4