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

Collection et Stream Java Discussion :

Limiter un JTextField par une regexp


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club

    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 30
    Points
    30
    Par défaut Limiter un JTextField par une regexp
    Bonjour

    Je tente de limiter un JTexteField par une regexp de façon à n'autoriser que certains caractères. Je peux sans trop de problème limiter certains cas, mais je butte à partir du moment où je veux imposer une chaîne globale.
    Exemple, je souhaite que je JTextField n'autorise que la rentrée de la séquence suivante: Une MAJ puis 3 Chiffres puis 2 Majuscules.

    Voici 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    class LimittedTextField extends JTextField {
    	final static long serialVersionUID = 123456789L;
     
    	protected Document createDefaultModel() {
    		return new LimittedDocument();
    	}
     
    	class LimittedDocument extends PlainDocument {
     
    		private String pattern = "^([A-Z]{1})([0-9]{3})([A-Z]{2})$";
    		Pattern patternName = Pattern.compile(pattern);
     
    		public LimittedDocument() {
    			super();
    			toolkit = Toolkit.getDefaultToolkit();
    		}
     
    		public void insertString(int offs, String str, AttributeSet a)
    		throws BadLocationException {
     
    			String text = super.getText(0, super.getLength()) + str;
     
    			Matcher theMatcher = patternName.matcher(str);
    			if ( theMatcher.find() ) {
    				super.insertString(offs, str, a);
    				System.out.println(theMatcher.group());
    			} else {
    				System.out.println( text + "   " + str + " : no match");
    			}
     
    		}
    		private Toolkit toolkit;
    	}
    }
    Il me semble que je butte sur le fait que les caractères entrent un pas un et que je n'ai pas compris comment gérer ce cas dans la constitution de la chaîne pour regexp.
    Quelqu'un peut-il me donner une piste de réflexion pour que j'avance sur ce sujet, ou suis-je en train de courrir après l'impossible ?


    En vous remerciant de vos conseils avisés,

    Cordialement

  2. #2
    Nouveau membre du Club

    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 30
    Points
    30
    Par défaut
    Je pense avoir trouvé une solution.
    Je vais utiliser JFormattedTextField conjointement avec MaskFormatter
    et ainsi, je devrais arriver à mes fins.

    Bon développement à tous

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

Discussions similaires

  1. [RegEx] Limite d'une regexp ?
    Par Avalion dans le forum Langage
    Réponses: 7
    Dernier message: 04/07/2011, 10h15
  2. [regexp] Remplacer une chaîne par une chaîne aléatoire
    Par endreillie dans le forum Langage
    Réponses: 9
    Dernier message: 28/10/2010, 12h15
  3. [AC-2002] Limite d'affichage d'un champ mémo par une requête
    Par azertix dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/01/2010, 10h59
  4. [JavaScript] [SRC] getElement(s)ById filtré par une regExp
    Par SpaceFrog dans le forum Contribuez
    Réponses: 39
    Dernier message: 28/07/2009, 00h02
  5. Réponses: 2
    Dernier message: 17/04/2008, 11h16

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