IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

JFormattedTextField ou JPassword ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut JFormattedTextField ou JPassword ?
    Bonjour, voilà je me pose la question depuis ce matin.

    Imaginons que je doive créer une petite application avec une fenêtre d'identification. Il me faudra donc un textfield login et un textfield mot de passe.

    Cependant, si je veux rajouter une contrainte sur le mot de passe, du style entre 4 et 10 caractères alphanumériques, je pensais utiliser un JFormattedtextField avec un masque.

    Mais pour des raisons de sécurité évidente, le mot de passe ne doit pas apparaître en clair et donc je pensais aussi utiliser un JPassword.

    Du coup, je me pose la question, lequel choisir ? Ya t'il une 3ème alternative ?

    Bref, j'aimerais avoir votre avis sur le sujet, pas de code ni rien, c'est juste une question qui me chagrine depuis la salle de bains

    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Ben tu utilises un JPasswordField, puis quand l'utilisateur valide, tu vérifie que le password indiqué est conforme.
    Je vois pas trop où est le problème .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Alors dans ce cas quel est l'intérêt d'utiliser des JFormattedTextField plutôt que des JTextField normaux dans d'autres cas puis que là aussi on peut faire la vérification à la validation ?

    En fait, je m'interroge surtout sur la pertinence des JFormattedTextField et surtout leur environnement d'utilisabilité.

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Il me semble que le JFormattedTextField permet un contrôle "en direct" de la saisie.

    How to Use Formatted Text Fields.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Ben oui ralala désolé pour la question, pas la forme ce matin

    C'est vrai qu'il ne vaut mieux pas que je contrôle en direct la saisie du mot de passe sinon question sécurité c'est pas top.

    Merci encore le yam's d'avoir pris le temps de répondre, le pire c'est que je la savais pertinemment

  6. #6
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par le y@m's
    Il me semble que le JFormattedTextField permet un contrôle "en direct" de la saisie.

    How to Use Formatted Text Fields.
    On peut aussi faire un contrôle "en direct" sur un JPasswordField en lui assignant comme document ton propre document qui étend PlainDocument. Tu pourras alors lui assigner une longueur et un type de caractères.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
     
    /**
     * Masque de saisie pour entiers.
     * 
     * @author Schniouf
     *
     */
    public class IntegerMask extends PlainDocument
    {
     
    	private static final long serialVersionUID = 3480420947370535022L;
     
     
     
    	/**Longueur par défaut (en nombre de chiffres) d'un entier*/
    	public static final int DEFAULT_LENGTH = 32 ;
     
    	/**Nombre max de caractères que pourra contenir le textfield*/
    	private int maxLength ;
     
     
     
    	/**
             * Constructeur avec nombre de chiffres par défaut.
             */
    	public IntegerMask()
    	{
    		this ( DEFAULT_LENGTH ) ;
    	}
     
     
    	/**
             * Constructeur avec nombre de chiffres choisi.
             * @param length Nombre de chiffres de l'entier
             */
    	public IntegerMask( int length )
    	{
    		super() ;
    		this.maxLength = length ;
    	}
     
     
     
    	/**
             * Méthode appelée à l'insertion d'un String
             */
    	public void insertString(int position, String chaine, AttributeSet attribut) throws BadLocationException 
    	{
     
    		StringBuffer buffer = new StringBuffer();
    		char caractere;
     
    		/*
    		 * Pour chaque caractère à ajouter
    		 */
    		for (int i = 0; i < chaine.length(); i++) 
    		{
    			caractere = chaine.charAt(i);
     
    			boolean ok ;
     
    			// Si c'est un chiffre
    			ok = Character.isDigit( caractere ); 
     
    			// Si on n'a pas dépassé la longueur totale
    			ok &= ( (getLength()+chaine.length()) <= maxLength ) ; 
     
    			// Si tout est OK, on ajoute le caractère dans le buffer
    			if ( ok )
    				buffer.append(caractere) ;
    		}
     
    		// Ajout du buffer au textfield
    		super.insertString(position, buffer.toString(), attribut);
     
    	}
     
     
     
    	public int getMaxLength()
    	{
    		return maxLength;
    	}
     
     
     
    	public void setMaxLength(int maxLength)
    	{
    		this.maxLength = maxLength;
    	}
     
     
    }
    puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textField.setDocument( new IntegerMask() ) ;
    Comme JPassWordField hérite de JTextField, ça devrait fonctionner... à tester !

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Oui,
    mais pour un password je pense qu'il est plus simple (et plus ergonomique) de faire un contrôle uniquement à la fin (enfin, c'est comme sironimo veut ^^).
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Merci pour l'info schniouf mais bon en terme de sécurité, le contrôle en direct du mot de passe, c'est vraiment pas génial. Sinon, ça permet à l'utilisateur d'éliminer des caratères ou de déterminer les tailles min et max des mots de passe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JFormattedTextfield] Insérer du texte
    Par stailer dans le forum Composants
    Réponses: 6
    Dernier message: 09/08/2005, 11h55
  2. [JFormattedTextField] Utilisation
    Par bartmarley dans le forum Composants
    Réponses: 3
    Dernier message: 28/01/2005, 22h53
  3. [JFormattedTextField ]validité d'une adresse mail
    Par gege2mars dans le forum Composants
    Réponses: 3
    Dernier message: 14/01/2005, 16h55
  4. [JFormattedTextField]selectAll
    Par harold63 dans le forum Composants
    Réponses: 4
    Dernier message: 21/07/2004, 10h55
  5. [JFormattedTextField]Format spécial
    Par eraim dans le forum Composants
    Réponses: 13
    Dernier message: 22/04/2004, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo