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

Composants Java Discussion :

[JTextField] Limiter la saisie a des lettres.


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut [JTextField] Limiter la saisie a des lettres.
    Bonjour,
    voilà je recherche un fonction qui me permettent de saisir seulement des lettres dans mon JTextField. Quelqun a t'il ca sous la main ?

    Merci d'avance

  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

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut
    j'ai essayé cette fonction mais ca n'as pas l'aie de fonctionner:

    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
    import java.awt.Dimension;
    import javax.swing.*;
    import javax.swing.text.*;
     
     
    /**
     *Classe permettant de créer un champ de texte n'acceptant que des lettres et limité en nombre de caractères
     *  
     * @author Ribaud Patrice
     *
     */
     
    public class TexteSeulement extends JTextField {
     
     
    	/**
             * Constructeur pour créer le champ de texte
             * 
             * @param colonnes largeur du champ en nombre de colonnes
             * @param nb nombre maxi de caracteres
             */
    	public TexteSeulement(int colonnes,int nb){
     
    		super(new DocumentTexte(nb),"",colonnes);
    		setPreferredSize(new Dimension(160,19));
    		//this.setFont(new Font("verdana",Font.PLAIN,10));
    	}
     
    	static class DocumentTexte extends PlainDocument {
     
    		int nb;
     
    		public DocumentTexte(int nb){
     
    			this.nb = nb;
    		}
     
    		public void insertString(int offs,String str, AttributeSet a) throws BadLocationException {
     
     
    			if (offs >= nb) { return; }
    			char[] first = str.toCharArray();
    			StringBuffer buff = new StringBuffer();
    			int i = 0;
     
    			for (; i < first.length; i++)
    			if(Character.isLetter(first[i]))
    			buff.append(first[i]);
    			super.insertString(offs, buff.toString(), a);
     
    		}
     
    	}
     
    }

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 269
    Par défaut
    Sinon cyborg j'ai une petite classe pour limiter aux caracteres que tu souhaites en recuperant les evenements claviers, c'est assez nickel :

    Ici je m'en suis servi pour limiter le champs aux numeriques
    ca te permet réellement de limiter aux touches que tu souhaites

    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
    package utilitaires;
     
    import java.awt.event.KeyEvent;
     
    import javax.swing.JTextField;
     
    /**
    * Class héritant de la class JTextfield
    * permettant de limiter la saisie au caractères choisi
    * 
    */
    public class JNumberField extends JTextField
    {
     
        public JNumberField()
        {
            super();
        }
     
        public JNumberField(String string)
        {
            super(string);
        }
     
        protected void processComponentKeyEvent(KeyEvent e)
        {
            int id = e.getID();
            switch(id)
            {
                    case KeyEvent.KEY_TYPED:
                    case KeyEvent.KEY_PRESSED:
                    case KeyEvent.KEY_RELEASED:
                        if (allowKey(e))
                        {
                            super.processComponentKeyEvent(e);
                        }
                        else
                        {
                             e.consume();
                         }
                        break;
     
            }
        }
     
        protected boolean allowKey(KeyEvent event)
        {
            int keyCode = event.getKeyCode();
            char keyChar = event.getKeyChar();
            if (keyChar == KeyEvent.VK_0            ||
                keyChar == KeyEvent.VK_1            ||
                keyChar == KeyEvent.VK_2            ||
                keyChar == KeyEvent.VK_3            ||
                keyChar == KeyEvent.VK_4            ||
                keyChar == KeyEvent.VK_5            ||
                keyChar == KeyEvent.VK_6            ||
                keyChar == KeyEvent.VK_7            ||
                keyChar == KeyEvent.VK_8            ||
                keyChar == KeyEvent.VK_9            ||
                keyChar == KeyEvent.VK_BACK_SPACE   ||
                keyCode == KeyEvent.VK_TAB          ||
                keyCode == KeyEvent.VK_RIGHT        ||
                keyCode == KeyEvent.VK_LEFT         ||
                keyCode == KeyEvent.VK_DELETE       ||
                keyCode == KeyEvent.VK_HOME         ||
                keyCode == KeyEvent.VK_END          ||
                keyCode == KeyEvent.VK_ENTER        ||
                keyCode == KeyEvent.VK_ESCAPE       ||
                keyCode == KeyEvent.VK_SHIFT)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
    Je te met lien de reste du post ou ca parle de mask formatteur :

    http://www.developpez.net/forums/vie...922&highlight=

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 226
    Par défaut
    merci tchoukapi c'est sympa

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

Discussions similaires

  1. [JTextField]Limiter la saisie aux chiffres
    Par mavina dans le forum Composants
    Réponses: 3
    Dernier message: 24/09/2008, 05h12
  2. [js] accepter seulement la saisie des lettres?
    Par adil_vpb dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/04/2007, 15h04
  3. Limiter la saisie dans un Jtextfield
    Par boudji dans le forum JBuilder
    Réponses: 2
    Dernier message: 20/08/2006, 11h57
  4. CComboBox::Limiter la Saisie des caractères
    Par bizulk dans le forum MFC
    Réponses: 6
    Dernier message: 13/09/2005, 16h42
  5. limiter la saisie dans un edit à des réels!!!
    Par shout dans le forum Windows
    Réponses: 10
    Dernier message: 21/06/2004, 17h20

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