[RESOLVIDO] JOptionPane

12 respostas Resolvido
java
R

Estou com uma duvida, estou fazendo um programa que quando o usuario clica no botão cancelar aparece a mensagem “Deseja sair?”. Se clicar em sim, o usuario sai do programa, caso clique em não ele retorna a página que estava (antes de clicar em cancelar). O problema é que não faço ideia de como fazer. Poderiam ajudar?

Código abaixo:

if (escolha == null) {
      escolha2 = JOptionPane.showConfirmDialog(null, "Deseja sair?", "Saida", JOptionPane.YES_NO_OPTION);
      if (escolha2 == JOptionPane.YES_OPTION) {
          JOptionPane.showMessageDialog(null,"Que pena você desistiu" );
          System.exit(1);
      }
      else if (escolha2 == JOptionPane.NO_OPTION)
      {
          ////////////
      }
}

12 Respostas

R

A “página” que ele irá retornar é a mesma da pergunta de “deseja sair” ?? Se sim:

import javax.swing.JOptionPane;

public class ex01 {

public static void main(String[] args) {
    
    int resposta;

    do{
        
    resposta = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(resposta == JOptionPane.NO_OPTION);
    

}

Isso porque o JOptionPane servem apenas para pequenas mensagens ou caixas de diálogos.

R

o loop do “Você deseja sair” fica infinito quando clico em não

package aula.pkg3.exercicio.pkg2;

import javax.swing.JOptionPane;

public class Aula3Exercicio2 {

    public static void main(String[] args) {

        String escolha, primeiraLetra1, ultimaLetra1, primeiraLetra2, ultimaLetra2, primeiraLetra3, ultimaLetra3;
        int escolha2, dica, contadorDica, ultimoNome1, ultimoNome2, ultimoNome3, tamanhoDaPalavra1, tamanhoDaPalavra2, tamanhoDaPalavra3, resposta;
        

        contadorDica = 0;

        JOptionPane.showMessageDialog(null, "Jogador 1 ");
        escolha = JOptionPane.showInputDialog("Escolha uma modalidade (Esporte, Filmes, Séries, etc...)");
        if (escolha == null) {
            do{
        
    escolha2 = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(escolha2 == JOptionPane.NO_OPTION);
    

        } else if (escolha != null) {

            String nome1 = JOptionPane.showInputDialog("Digite o 1º nome da categoria " + escolha);
            do{
        
    escolha2 = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(escolha2 == JOptionPane.NO_OPTION);
            
            String nome2 = JOptionPane.showInputDialog("Digite o 2º nome da categoria " + escolha);
            
            do{
        
    escolha2 = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(escolha2 == JOptionPane.NO_OPTION);
            
            String nome3 = JOptionPane.showInputDialog("Digite o 3º nome da categoria " + escolha);
            
            do{
        
    escolha2 = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(escolha2 == JOptionPane.NO_OPTION);

            JOptionPane.showMessageDialog(null, "Jogador 2 ");
            JOptionPane.showMessageDialog(null, "A modalidade é  " + escolha);

            for (int i = 10; i >= 1; i--) {
                String tentativa = JOptionPane.showInputDialog("Digite 3 nomes, separados por vírgula da categoria " + escolha);
              
                do{
        
    escolha2 = JOptionPane.showConfirmDialog(null, "Você deseja fechar?");
        
    }while(escolha2 == JOptionPane.NO_OPTION);

                /*SE ALGUMA ESTIVER CORRETA*/
                if (nome1.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome1);
                }

                if (nome2.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome2);
                }
                if (nome3.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome3);
                }

                /*SE ACERTAR TUDO*/
                if (nome1.equals(tentativa) && nome2.equals(tentativa) && nome3.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Parabéns, você acertou tudo");
                }

                /*DICA*/
                dica = JOptionPane.showConfirmDialog(null, "Você possui " + i + " tentativas, deseja usar uma dica?", "Dica", JOptionPane.YES_NO_OPTION);

                if (dica == JOptionPane.YES_OPTION) {

                    i = i - 1;
                    contadorDica += 1;

                    if (contadorDica == 1) {
                        ultimoNome1 = nome1.length();
                        tamanhoDaPalavra1 = ultimoNome1 - 1;
                        primeiraLetra1 = nome1.substring(0, 1);
                        ultimaLetra1 = nome1.substring(tamanhoDaPalavra1, ultimoNome1);
                        JOptionPane.showMessageDialog(null, "Dica do primeiro nome:\nPrimeira Letra: " + primeiraLetra1 + "\nUltima Letra: " + ultimaLetra1);
                    } else if (contadorDica == 2) {
                        ultimoNome2 = nome2.length();
                        tamanhoDaPalavra2 = ultimoNome2 - 1;
                        primeiraLetra2 = nome2.substring(0, 1);
                        ultimaLetra2 = nome2.substring(tamanhoDaPalavra2, ultimoNome2);
                        JOptionPane.showMessageDialog(null, "Dica do segundo nome:\nPrimeira Letra: " + primeiraLetra2 + "\nUltima Letra: " + ultimaLetra2);
                    } else if (contadorDica == 3) {
                        ultimoNome3 = nome3.length();
                        tamanhoDaPalavra3 = ultimoNome3 - 1;
                        primeiraLetra3 = nome3.substring(0, 1);
                        ultimaLetra3 = nome3.substring(tamanhoDaPalavra3, ultimoNome3);
                        JOptionPane.showMessageDialog(null, "Dica do terceiro nome:\nPrimeira Letra: " + primeiraLetra3 + "\nUltima Letra: " + ultimaLetra3);

                    }

                } else {
                do{
        
  
        
    }while(escolha2 == JOptionPane.NO_OPTION);    
                }

            }
        }

    }

}
J

Ola @Rafaela_Gomes o código esta certo quando VC clica em sim ele sai do loop caso caso contrario ele continua, entendeu?

R

O que eu quis dizer era pra quando o usuario clicasse em “Cancelar” no programa abrisse uma página perguntando se ele quisesse sair, se clicasse em sim ele sairia do programa, se clicasse em não ele retornaria ao programa e continuaria da onde parou. O meu problema é nos códigos se ele clicar em não. Deu pra entender?

J

Entendi

R

fazer um jogo que o jogador 1 digite um tópico (Esporte, filme e bla bla) depois escreva 3 coisas relacionadas a este tópico. O jogador 2 precisa adivinhar estas 3 coisas relacionadas com 10 tentativas, ele pode pedir uma dica que consiste na primeira e ultima letra desta palavra relacionada. Mas se pedir dica ele perde 2 tentativas de acerto.

J

Faz assim Rafaela

Resultado= JOptionPane.showConfimDialog("VC deseja  fechar?");
  If(resultado==joptionpane.no_option){
     Resultado=JOptionPane.showConfirmDialog("deseja sair?");
  If(resultado==JOptionPane.YES_OPTION){
  Break;
 }
}
J

Vou tentar analisar seu código para vê se você esta no caminho certo

J

Então @Rafaela_Gomes vamo tentar corrigir alguns erros de cara

1- o contador contadorDica ele tem que iniciar com 10 e ir decrementando
2 - logo no inicio a pessoa escolhe uma modalidade correto, o while é desnessario uma vez que não terá mais interação, então vai ficar assim o do while vai englobar o if else, assim

Do{
    Escolha=joptionpane.showinputdialog("escolha a modalidade");
   If(escolha==null){
     Escolha2=joptionpane.showconfirmdialog("você deseja fechar?")
   If(escolha2==joptionpane.YES_OPTION){
     BREAK;
      }
    } Else{
      //seu código do jogo
      }
     } while()

3-retirar os demais do while para fecha vamos tentar deixar só um que é o correto

J

4- na comparação das categorias para ver se ele acertou usar equasignorecase ao invés de equals, assim ele ignora lexicografia ou seja a maneira como foi escrita exemplo maiúscula ou minúscula

J
Solucao aceita

5-o for que VC usou para decrementar as dicas esta incorreto, o certo ai é VC criar um do while para ele ficar respondendo
6-o código das dicas tem que ficar no inicio , e tem que ficar perguntando se ele não quer dica

J

Oi Rafaela, dei uma olhada no seu programa. Acabei mexendo tambem. Ve se tu aproveita alguma coisa :slight_smile:

import java.util.Random;
import javax.swing.JOptionPane;

public class Aula2Exercicio3 {

    public static void main(String[] args) {

        String escolha, primeiraLetra1, ultimaLetra1, primeiraLetra2, ultimaLetra2, primeiraLetra3, ultimaLetra3;
        int escolha2, dica, contadorDica, ultimoNome1, ultimoNome2, ultimoNome3, tamanhoDaPalavra1, tamanhoDaPalavra2, tamanhoDaPalavra3, resposta;
        

        

        JOptionPane.showMessageDialog(null, "Jogador 1 ");
        escolha = JOptionPane.showInputDialog("Escolha uma modalidade (Esporte, Filmes, Séries, etc...)");

            String nome1 = JOptionPane.showInputDialog("Digite o 1º nome da categoria " + escolha);
            
            String nome2 = JOptionPane.showInputDialog("Digite o 2º nome da categoria " + escolha);
                  
            String nome3 = JOptionPane.showInputDialog("Digite o 3º nome da categoria " + escolha);


            JOptionPane.showMessageDialog(null, "Jogador 2 ");
            JOptionPane.showMessageDialog(null, "A modalidade é  " + escolha);
            

            int corretos  = 0;
            int tentativas = 10;
            Random rand = new Random();
           
            do {
               
                String tentativa = JOptionPane.showInputDialog("Adivinhe!\nDigite 3 nomes, separados por vírgula da categoria " + escolha);
                
                 /*SE ACERTAR TUDO*/
                if (nome1.equals(tentativa) && nome2.equals(tentativa) && nome3.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Parabéns, você acertou tudo");
                    corretos = 3;
                }
                /*SE ALGUMA ESTIVER CORRETA*/
                else if (nome1.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome1);
                    corretos++;
                } else if (nome2.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome2);
                    corretos++;
                } else if (nome3.equals(tentativa)) {
                    JOptionPane.showMessageDialog(null, "Correto! A resposta é " + nome3);
                    corretos++;
                } else {
                /*DICA*/
                dica = JOptionPane.showConfirmDialog(null, "Você possui " + tentativas + " dicas, deseja usar uma?", "Dica", JOptionPane.YES_NO_OPTION);
                
                if (dica == JOptionPane.YES_OPTION) {
                    int dicas = rand.nextInt(3);
                    tentativas--;
                   
                    if (dicas == 1) {
                        ultimoNome1 = nome1.length();
                        tamanhoDaPalavra1 = ultimoNome1 - 1;
                        primeiraLetra1 = nome1.substring(0, 1);
                        ultimaLetra1 = nome1.substring(tamanhoDaPalavra1, ultimoNome1);
                        JOptionPane.showMessageDialog(null, "Dica do primeiro nome:\nPrimeira Letra: " + primeiraLetra1 + "\nUltima Letra: " + ultimaLetra1);
                    } else if (dicas == 2) {
                        ultimoNome2 = nome2.length();
                        tamanhoDaPalavra2 = ultimoNome2 - 1;
                        primeiraLetra2 = nome2.substring(0, 1);
                        ultimaLetra2 = nome2.substring(tamanhoDaPalavra2, ultimoNome2);
                        JOptionPane.showMessageDialog(null, "Dica do segundo nome:\nPrimeira Letra: " + primeiraLetra2 + "\nUltima Letra: " + ultimaLetra2);
                    } else if (dicas == 3) {
                        ultimoNome3 = nome3.length();
                        tamanhoDaPalavra3 = ultimoNome3 - 1;
                        primeiraLetra3 = nome3.substring(0, 1);
                        ultimaLetra3 = nome3.substring(tamanhoDaPalavra3, ultimoNome3);
                        JOptionPane.showMessageDialog(null, "Dica do terceiro nome:\nPrimeira Letra: " + primeiraLetra3 + "\nUltima Letra: " + ultimaLetra3);

                    }

                } 
                else {  }
                }
            } while (corretos != 3 || tentativas != 10);
    }

}
Criado 30 de agosto de 2016
Ultima resposta 30 de ago. de 2016
Respostas 12
Participantes 4