Partage
  • Partager sur Facebook
  • Partager sur Twitter

Masquer un mdp

    5 mai 2010 à 11:35:54

    Bonjour à tous.

    Dans mon appli, je demande à l'utilisateur un id/mdp si ceux ci sont requis. j'aimerais savoir s'il est possible d'afficher des étoiles plutôt que les lettres, et si oui comment faire.

    Thanks in advance
    • Partager sur Facebook
    • Partager sur Twitter
      5 mai 2010 à 11:39:56

      Si c'est du swing tu as un JPasswordField
      • Partager sur Facebook
      • Partager sur Twitter
        5 mai 2010 à 11:41:44

        Pas du tout, c'est un JTextField tout ce qu'il a de plus bête...Et si je peux éviter de le modifier, étant donné que j'ai déjà tout réglé à propos des écoutes et comportement, ça m'arrangerais :p
        • Partager sur Facebook
        • Partager sur Twitter
          5 mai 2010 à 11:44:31

          non je veux dire qu'il existe JPasswordField qui fait ce que tu demande.
          Je pense (mais bon comme je lis jamais vraiment la javadoc même quand c'est pour moi :-° je sais c'est mal)
          je pense donc que JPasswordField se comporte exactement comme JTextField donc pas besoin de changer quoi que ce soit sauf le type du champ

          Citation : http://java.sun.com/docs/books/tutorial/ui/features/components.html


          The JPasswordField class, a subclass of JTextField



          donc c'est marche
          • Partager sur Facebook
          • Partager sur Twitter
            5 mai 2010 à 13:36:25

            he he...je dis pas, mais je n'ai pas à proprement parler des JTextField non plus, j'ai créé une sous classe de JTextField afin de gérer plus facilement les réactions du programme (et sachant que j'en ai au minimum un, jusqu'à 6 ou 7, je préférais éviter les déclarations inline...)
            D'où ma demande d'une "magouille" pour faire ça. Bon au pire c'est pas grave mais bon ça serait bien^^
            • Partager sur Facebook
            • Partager sur Twitter
              5 mai 2010 à 14:06:01

              Je vois pas de méthode sur JTextField qui permettrait de masquer le texte :s .

              M'est avis qu'à part en faisant une deuxième classe qui elle, hérite de JPasswordField et changer tes déclarations, t'es coincé.
              • Partager sur Facebook
              • Partager sur Twitter
                5 mai 2010 à 14:11:38

                et si ta classe au lieu de faire une sous-classe de JTextField tu en fais une de JPasswordField, ça marche pas ?

                Sinon je suppose que tu peux passer par un listener qui met * dès qu'on saisi un caractère, je sais plus lequel c'est
                • Partager sur Facebook
                • Partager sur Twitter
                  5 mai 2010 à 16:27:47

                  A mon avis, si tu remplaces

                  "extends JTextField" par "extends JPasswordField", ça marchera :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 mai 2010 à 16:31:27

                    Citation : pyo

                    A mon avis, si tu remplaces

                    "extends JTextField" par "extends JPasswordField", ça marchera :)



                    Oui mais je pense que son problème c'est qu'il utilise sans doute cette même classe ailleurs pour des TextField. Il faudrait donc faire une deuxième classe, qui elle, hérite JPasswordField et instancier la bonne classe au cas par cas. Et cette manip' demande de repasser un peu partout dans le code :s .
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 mai 2010 à 17:02:23

                      ah bah oui,
                      du coup tu peux peut-être passer tout simplement par une fonction du genre

                      public void setPassword(String s){
                          String pass = "";
                          for(int i =0; i < s.length ; i ++){
                              pass += "*";
                          }
                          tonJTextField.setText(pass);
                      }
                      

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 mai 2010 à 17:08:43

                        Petite idée : utiliser la composition plutôt que l'héritage.
                        Au cas par cas, en interne, tu crées soit un JTextField soit un JPasswordField. On peut profiter du fait que la seconde étend la première. Ca s'appelle de la stratégie. ON a une seule classe, deux possibilités.


                        Par contre, je ne sais pas dans quelle mesure c'est effectivement possible, notamment si tu as redéfini des méthodes de JTextField dans ta sous-classe. Mais si ta classe sert juste à réunir le champ et les listeners qui vont bien, ça ne changera pas tant de choses que ça.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 mai 2010 à 19:57:50

                          C'est exactement le problème Javier ^^
                          Je pense que je vais essayer la proposition de Ferl, c'est quelque chose comme ça que je cherchais. Je vous tiendrais au courant.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 mai 2010 à 0:57:40

                            L'ennui avec cette technique c'est que tu ne peux plus récupérer le mot de passe après avec un getText(). Tu dois penser à le stocker quelque part. (C'est vrai que ce n'est pas si contraignant que ça)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Masquer un mdp

                            × 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