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 :

Bloquer touche clavier


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Par défaut Bloquer touche clavier
    Bonjours,
    Je voudrais pouvoir bloquer toute les touches du clavier qui ne renvoie pas un chiffre.
    Donc j'ai écrit ce code, malhereusement pour moi il ne fonctionne pas. Quelqu'un saurait d'ou peut provenir l'erreur?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class evenementClavier implements KeyListener{
     
    		public void keyPressed(KeyEvent arg0) {
    			if (arg0.getKeyCode() > 47 && arg0.getKeyCode() < 59 ) 
    			{
    				result.setText(result.getText() + arg0.getKeyChar());
    			}
     
    		}		
     
     
    result.addKeyListener(new evenementClavier());

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quel est le type du composant ?
    S'il s'agit d'un composant textuelle alors une fois que tu reçoit le keylistener il est déjà trop tard, et il faut faire cela en amont via le Document ou un JFormatedTextField...


    a++

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 11
    Par défaut
    Ok merci,
    J'utilise JTextField comme composant. J'ai un peu regardé les méthodes que contient JFormatedTextField mais je t'avouerais que je me perds un peu tu pourrais m'en dire plus ?

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Ou alors tu vois la chose sous un autre angle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void keyPressed(KeyEvent arg0) {
    			if (arg0.getKeyCode() <= 47 || arg0.getKeyCode() >= 59 ) 
    			{
    				result.setText(result.getText() - le dernier charactère);
    			}
     
    		}

  5. #5
    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 kilian68 Voir le message
    Ok merci,
    J'utilise JTextField comme composant. J'ai un peu regardé les méthodes que contient JFormatedTextField mais je t'avouerais que je me perds un peu tu pourrais m'en dire plus ?

    bonjour,

    voici un exemple utilisant l'objet Document comme le conseille adiGuba. Je me suis inspiré de l'exemple donné dans la documentation sun :
    http://java.sun.com/j2se/1.4.2/docs/...TextField.html

    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
     
    /**
     *
     * JTextField autorisant uniquement la saisie de nombres positifs.
     */
    public class myTextField extends JTextField
    {
        public myTextField()
        {
            super();
        }
     
        @Override
        protected Document createDefaultModel()
        {
            return new FileCaseDocument();
        }
     
        static class FileCaseDocument extends PlainDocument
        {
            String text = null;
            String str1, str2;
     
            @Override
            public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
            {
                if (str == null)
                {
                    return;
                }
     
                text = this.getText(0, this.getLength());
                str1 = text.substring(0, offs);
                str2 = text.substring(offs, this.getLength());
     
                text = str1+str+str2;
     
     
                if (text.matches( "(0)|([1-9][0-9]*)" ))
                {
                    super.insertString(offs, str, a);
                }
     
            }
        }
    }

  6. #6
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut
    Bonjout,

    Ce code somble fonctionner uniquement pour écrire des entier. Comment faire quand il s'agit d'un prix pour laisser passer le point et deux chiffre derrière.



    J'ai essayé ça mais impossible de tapper le point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( text.matches( " (0)  |([1-9][0-9]*)" ) | str2.contains("."))
    Merci pour votre aide

    Salutations

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    EN changeant l'expression régulière pour quelque chose du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0-9]*([.,][0-9]{0,2})?

  8. #8
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut Deux chiffre derrière la virgule multiple de 5
    Bonjour,

    Meci ça marche bien, Maintenant, j'ai essayé la chose suivante dans le but que le chiffre derrière la virgule soit un multiple de 5

    Voilà mon code

    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
     
     
     if ( text.matches( "[0-9]*([.,][0-9]{0,2})?" ))
    	            {
    	            	int posdecimale = text.lastIndexOf('.');
    	            	int centime;
    					if (posdecimale != -1) {
    						if (text.lastIndexOf(posdecimale) != text.length()) {
    	               centime = Integer.parseInt(text.substring(posdecimale));
    	            	if (centime > 9) {
    	            	if (centime % 5 == 0) {
    	               super.insertString(offs, str, a);
    	            	}
    	            	}
    	            	else
    		 	          super.insertString(offs, str, a);
    	            	}
    	            	else
    	 	               super.insertString(offs, str, a);
     
    					}
    					else
    		 	               super.insertString(offs, str, a);
     
    	            }

    problème : je ne peux plus tapper le point. une NumberFormatException se lève. Pourqoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	 centime = Integer.parseInt(text.substring(posdecimale));
    Est.ce vraiment le bon moment pour faire ce genre de vérification ?

    Merci pour votre réponse

  9. #9
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut
    Bonjour,

    J'ai écris cette ligne de condition dans le but que l'utilisateur ne puisse tapper que des lettre dans les noms.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ( str.matches( "([a-z]|[A-Z] |[ ]*)" ))
    Problème : Les lettre majuscules ainsi que les lettes accentuées sont bloquées. Pourquoi ?

    Merci de me répondre

    Salutations

Discussions similaires

  1. Bloquer une touche clavier
    Par sniperpro dans le forum C
    Réponses: 2
    Dernier message: 17/11/2011, 16h31
  2. [VB.NET] Bloquer touches Windows
    Par seemax dans le forum Windows Forms
    Réponses: 13
    Dernier message: 04/10/2007, 09h19
  3. Bloquer le clavier
    Par tazamorte dans le forum C++Builder
    Réponses: 6
    Dernier message: 31/03/2004, 16h43
  4. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23
  5. envoie de touche clavier
    Par psfox2001 dans le forum DirectX
    Réponses: 1
    Dernier message: 13/03/2003, 21h56

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