Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boite de dialogue

que renvoie-t-elle ?

    13 janvier 2011 à 18:06:02

    Hello,

    je suis bloqué dans la réalisation d'un petit programme à but éducatif (éducatif pour moi, pas pour ses utilisateurs^^).

    en faite, j'ai mis au démarrage du programme une boite de dialogue qui demande le pseudonyme de l'utilisateur.

    Ensuite, j'ai voulu faire une vérification pour éviter que l'utilisateur n'entre aucun pseudo.

    Pour faire cela, j'ai tout d'abord initialiser une variable String pseudo à la valeur "".

    Ensuite, je pose une première fois la question, puis tant que pseudo est égal à "" j'affiche un message d'erreur et je repose la question.

    Cela fonctionne correctement si l'utilisateur appuie sur OK avant de mettre un pseudo. Mais si l'utilisateur ferme la fenetre ou appuie sur Escape, mon erreur s'affiche pas et la question n'est pas reposée.

    Ma question est donc la suivante : que renvoie la boite de dialogue lorsqu'on la ferme avec la croix ou avec escape ? La valeur de mon string est surement modifié puisque le code sort de la boucle while et ne repose pas la question...mais quelle est cette nouvelle valeur ?

    Voici mon code pour finir...
    void ask_pseudo() {
    
    		pseudo = jop_pseudo.showInputDialog(null, "Quel est ton pseudo ?","Bienvenue !", JOptionPane.QUESTION_MESSAGE);
    		while (pseudo.equals("") == true) {
    			jop_pseudo_e.showMessageDialog(null, "Veuillez entrer un pseudo!","Action impossible", JOptionPane.ERROR_MESSAGE);
    			pseudo = jop_pseudo.showInputDialog(null, "Quel est ton pseudo ?","Bienvenue !", JOptionPane.QUESTION_MESSAGE);
    		}
    		lab_pseudo.setText(pseudo);
    	}
    


    Et une autre petite question, dans un string quelle est la différence entre "" et null.

    String pseudo = "";
    String pseudo = null;
    


    Pour moi, c'est la meme chose, mais j'ai fait différent essai qui m'ont prouvé le contraire...Je n'arrive pas trop à cerné la différence!

    • Partager sur Facebook
    • Partager sur Twitter
      13 janvier 2011 à 19:29:11

      bonjour,
      Question 1: tu peux faire un
      System.out.print(pseudo);
      
      pour voir ce qu'est elle retourne comme valeur.
      Question 2: la différence entre ces deux là :
      String pseudo = "";
      String pseudo = null;
      

      le 1ier pseudo est une référence (pointeur dans d'autres langages comme C++) d'un objet String qui qui contient la valeur ""
      le 2iem est une référence de type String qui ne réfère aucun objet .
      • Partager sur Facebook
      • Partager sur Twitter
        15 janvier 2011 à 0:19:06

        Exception in thread "main" java.lang.NullPointerException
        	at interface_gfx.ask_pseudo(interface_gfx.java:174)
        	at interface_gfx.<init>(interface_gfx.java:107)
        	at classMain.main(classMain.java:8)
        


        Enfaite ca m'affiche tout simplement ca lorsqu'on ferme la fenetre...j'ai essayé de trafiquer un peu avec des try catch mais je suis pas arriver à grand chose...si quelqu'un a une solution, je suis preneur!
        • Partager sur Facebook
        • Partager sur Twitter
          15 janvier 2011 à 1:06:02

          "Et une autre petite question, dans un string quelle est la différence entre "" et null."
          C'est comme penser à rien ( "" ) et ne pas penser ( null ) . (peut etre que ça te parle plus ?)
          • Partager sur Facebook
          • Partager sur Twitter
            15 janvier 2011 à 2:45:35

            le problème était dans la condition de ta boucle while essaie ça :
            void ask_pseudo() {
            
            		pseudo = jop_pseudo.showInputDialog(null, "Quel est ton pseudo ?","Bienvenue !", JOptionPane.QUESTION_MESSAGE);
            		while (pseudo == null) {
            			jop_pseudo_e.showMessageDialog(null, "Veuillez entrer un pseudo!","Action impossible", JOptionPane.ERROR_MESSAGE);
            			pseudo = jop_pseudo.showInputDialog(null, "Quel est ton pseudo ?","Bienvenue !", JOptionPane.QUESTION_MESSAGE);
            		}
            		lab_pseudo.setText(pseudo);
            	}
            

            ;)
            • Partager sur Facebook
            • Partager sur Twitter

            Boite de dialogue

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown