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

Java Discussion :

Contrôler un JTextField


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Par défaut Contrôler un JTextField
    Bonjour


    j'ai un petit problème

    j'ai un panneau de swing, et dans un des JtextField on dois écrire un nom (dans JtextField) et j'ai un JButton ("ok")

    je dois contrôler que le nom que la personne a écrit est bien un nom avec que des caractères alphabetique. (donc interdit de mettre des ciffres, des "?", "(" etc..)

    donc dans la méthode d'actionlistener
    je commence avec (c'est un exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (e.getSource == buttonOk){
    ........
     
       JOptionPane.showMessageDialog(null,"erreur de caractère");

    comment faire ce contrôle? (avec un try et catch?)

    un grand merci.

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    pour contrôler le contenu d'un JTextField passe par un PlainDocument. Exemple ici :
    http://docs.oracle.com/javase/1.4.2/...TextField.html

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Par défaut
    Bonjour

    après quelques recherches sur ce forum/site et d'autres sites j'ai trouvé ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Pattern patt1 = Pattern.compile("^[a-zA-Z]+$");
                 Matcher m1 = patt1.matcher(nom);
                if (m1.find()){   
                     System.out.println("ok");
     
                 }
                 else {
                     System.out.println("fout");
                     JOptionPane.showMessageDialog(null, "faute");
                 }

    ça marche...ouf

    mais comment autoriser les ' é à et les espaces?
    est ce possible que quelqu'un corrige mon code ("^[a-zA-Z]+$")


    c'est la première fois que je travaille avec pattern.

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    il faut modifier ton expression régulière pour accepter les espaces et les caractères accentués :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^[a-zA-Z àâäéèêëîïôöûü]+$
    je n'ai pris en compte que les caractères accentués minuscules que l'on rencontre en français.

    Jette un oeil sur ces deux liens :
    http://cyberzoide.developpez.com/java/regex/
    http://prevert.upmf-grenoble.fr/Prog...egulieres.html

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Par défaut
    Magnifique


    encore une autre question..


    j'ai dans mon database, une colonne pour le nom et un autre pour le mot de passe.


    je dois dans un swing, (Jtextfield), contrôler si le mot de pass et le nom sont le même que dans le database.

    comment faire? (si c'est trop long a expliquer et si vous connaisez un lien avec l'explication)

    un des problème que j'ai, c'est que lorsque je utilise
    select * from client where nom = ? et motDePasse = ?
    => que lorsque le nom et le mot de passe ne sont pas le même que j'ai un résultat null (sur sql).

    Encore un grand merci pour votres aide.

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par Logic_613 Voir le message
    je dois dans un swing, (Jtextfield), contrôler si le mot de pass et le nom sont le même que dans le database.
    Swing est l'api qui contient les composants graphiques dont les JTextField

    Tu n'as qu'un seul JTextField ? ou deux ?


    Citation Envoyé par Logic_613 Voir le message
    un des problème que j'ai, c'est que lorsque je utilise
    select * from client where nom = ? et motDePasse = ?
    => que lorsque le nom et le mot de passe ne sont pas le même que j'ai un résultat null (sur sql).
    je n'ai pas très bien compris ta question

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Swing est l'api qui contient les composants graphiques dont les JTextField

    Tu n'as qu'un seul JTextField ? ou deux ?

    je n'ai pas très bien compris ta question
    Bonjour




    Si j'écrit dans le JtextField "txtNom" et dans le "txtMotsDepasse" (donc j'ai 2 JTextField) , le programma dois controler si le nom et mots de passe correspond avec les données dans le database.
    (par exemple: -nom: "Alexandre"
    -mots de passe : "souris")

    je dois probablement faire un "try/catch"




    ce que je voulais dire, que lorsque j' écris dans le programma MySql(browser) et que je donne un nom ou mots de passe qui ne corresponds pas, je n'ai pas de résultats. (ce qui normal)


    donc comment faire qu'il contrôle le nom + mots de passe

    merci

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Tu n'as pas besoin d'un try catch seulement pour tester si le nom et psw se correspondent avec un enregistrement. Tu testes seulement la méthode next() du resulset s'il a trouvé ou non un client.
    Sinon, j'ai mal compris ton soucis .

    A+.

  9. #9
    Membre confirmé
    Homme Profil pro
    Etudiant (domaine de prédilection java)
    Inscrit en
    Mars 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant (domaine de prédilection java)
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 71
    Par défaut
    Salut,
    je n'ai pas très bien compris ton soucis, mais s'il s'agit de vérifier la validité des données saisies, je te propose un bout de code dans lequel on a un champ pour le login, un champ pour le mot de passe et un bouton.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    textLogin= new JLabel("LOGIN");
    login= new JTextField(10);
     
    textPassword= new JLabel("PASSWORD");
    password= new JPasswordField(20);//ceci permet de masquer le mot de passe saisi.
     
    btnValidConnexion=new JButton("OK");
    btnValidConnexion.setActionCommand("ok");
     btnValidConnexion.addActionListener(this);//En supposant que la classe dans laquelle tu mets ce code implémente ActionListener
    Ensuite tu peux avoir une méthode isUser(String login, String password) qui renvoie true si l'utilisateur est dans ta base, et false sinon.
    On l'implémenterait ainsi:
    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
     
    public boolean isUser(String login, String pwd){
    		String query;
    		boolean existe = false;
    		try{
    			query = "SELECT * FROM Utilisateur WHERE login = ? AND password = ? ";
    			ps= con.prepareStatement(query);//En supposant que con soit ton objet Connection 
    			ps.setString(1, login);
    			ps.setString(2, pwd);
    			ResultSet res = ps.executeQuery();
    			if(res.next())//On vérifie qu'il existe un résultat dans le resultset
    					existe = true;
    		}catch(SQLException e){
    			 System.out.println("SQLException"+e.getMessage());
    		}
    		finally{
    			try {
    				ps.close();//on ferme toujours les connexions
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		 return existe;
    	}
    Une fois que t'as ça, toutes les conditions sont réunies pour pouvoir tester l'existence d'un user au sein d'un actionPerformed()
    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
     
    public void actionPerformed(ActionEvent e) {
    if(e.getActionCommand()=="ok"){//Souviens-toi...le setActionCommand()...(^_^)
    			//Verification du login et mot de passe de l'utilisateur 
    			if(user.isUser(login.getText(), String.valueOf(password.getPassword()))){
    				//Actions de ton choix......	
    			}
    			else{
    				JOptionPane.showMessageDialog(null, "Mauvais login ou mot de passe", "Identification " +
    						"Error", JOptionPane.WARNING_MESSAGE);
    			}
     
    		}
    /*Petite précision supplémentaire: quand tu utilises un champ JPasswordField,
    pour récupérer la valeur entrée sous forme de chaîne de caractères tu appelles la méthode String.valueOf(champ.getPassword())*/
    }
    Voilà, je crois que t'as tout, bon courage, bonne journée!!

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2012
    Messages : 74
    Par défaut
    Bonjour

    merci pour vos réponses.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 3
    Par défaut
    moi j'ai aussi une préoccupation, j'ai créer une application avec deux formulaires alors je que lorsque je clique sur un bouton du premier formulaire que l'on puisse ouvrir mon deuxième formulaire et que l'on cache le premier.

    La deuxième préoccupation est que j'ai créer un menubar dans lequel j'ai créer un MenuItem, ensuit j'ai créer deux Textfield, alors je eut que lorsque j'écrit dans les deux textfields que l'on puisse activé le MenuItem. donc au chargement le MenuItem est a anabled(false). merci

  12. #12
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Par défaut
    Citation Envoyé par Logic_613 Voir le message
    Bonjour

    après quelques recherches sur ce forum/site et d'autres sites j'ai trouvé ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Pattern patt1 = Pattern.compile("^[a-zA-Z]+$");
                 Matcher m1 = patt1.matcher(nom);
                if (m1.find()){   
                     System.out.println("ok");
     
                 }
                 else {
                     System.out.println("fout");
                     JOptionPane.showMessageDialog(null, "faute");
                 }

    ça marche...ouf

    mais comment autoriser les ' é à et les espaces?
    est ce possible que quelqu'un corrige mon code ("^[a-zA-Z]+$")


    c'est la première fois que je travaille avec pattern.
    ca ne marche ps pour moi, il dit que la methode matche ne s'aplique ps au jtextfiled

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

Discussions similaires

  1. Contrôler les saisies des JTextField
    Par Relyss dans le forum Composants
    Réponses: 5
    Dernier message: 18/01/2010, 22h00
  2. [JtextField]Creer un masque pour Ip
    Par bibx dans le forum Composants
    Réponses: 8
    Dernier message: 11/01/2005, 17h31
  3. [JTextField][JDBC] Problème d'affichage
    Par deathwing dans le forum JDBC
    Réponses: 4
    Dernier message: 12/05/2004, 14h50
  4. Intercepter la tabulation sur un JTextField
    Par Fladnag dans le forum Composants
    Réponses: 2
    Dernier message: 29/03/2004, 11h05
  5. [JTextField] filtrer la saisie
    Par Merfolk dans le forum Composants
    Réponses: 7
    Dernier message: 04/03/2004, 19h57

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