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, formatter, expression réguliere, mask


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Par défaut JFormattedTextField, formatter, expression réguliere, mask
    Yep,

    Je voudrais qu'un utilisateur ne puisse pas saisir autre chose que ##0,###
    Pour ce faire, il faudrait :
    1° lui donner la possibilité de
    - saisir une de ces valeurs 123.456 ou 123 ou 0.123 ou 0.1 ou 0.12
    - effacer tous les chiffres qu'il a entré (je pense notamment au probleme de jformattedtextfield qui empeche d'effacer le dernier chiffre )

    2 ° l'interdir de
    saisir des lettres
    saisir un entier de + de 3 digits
    saisir un decimal avec + de 3 digits aprés la virgule
    saisir + d'une virgule
    saisir un contribuable endétté

    bref je crois avoir essayé la plupart des combinaisons avec jformattedtextfield ... par contre je connais pas les expressions régulieres (çela pourrait m'aider ???)
    merci de votre aide

  2. #2
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Je pense que ça peut t'apporter des éléments:

    http://www.developpez.net/forums/sho...d.php?t=238605

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Par défaut
    Sauf que là, le texte est déjà saisie même si il s'éfface aussitôt.
    Je pense que la solution la plus propre serait de faire une classe PlainDocument.
    Mais avant de me lancer là dedans j'aurais voulu savoir si la classe Jformattedtextfield pourrais convenir avec un parametre spécifique qui permet de surpprimer tous les chiffres saisis et un format adequat.

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 117
    Par défaut
    J'ai trouvé sur le forum une classe qui me convient parfaitement.
    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
    package source;
     
    import java.awt.Toolkit;
    import java.text.DecimalFormat;
    import javax.swing.text.*;
     
    /****
     * Classe DDocumentNumber : permet de personnaliser la gestion du "model" des composants Texte
     *        proposee dans l'api de swing 
     *
     ****/
     
     
    public class FiltreFlottant extends PlainDocument
    {
    	private int longueur;
    	private double min,max;
    		public FiltreFlottant(int taille,Double min,Double max)
    	{	
    		super ();
    		this.longueur = taille; // represente le nombre de digit maximum
    		this.min = min;
    		this.max = max; // represente la valeur limite a ne pas depasser par le champ a saisir
    		System.out.println(longueur);
    		System.out.println(this.min);
    		System.out.println(this.max);
     
    	}
     
    	/**
             * Redefini la methode de la classe PlainDocument permettant ainsi d'autoriser 
             * uniquement les caracteres desires
             */
    	public void insertString (int offs, String str, AttributeSet a) throws BadLocationException
    	{
    		StringBuffer sb = new StringBuffer ();
    		char car;
     
     
     
    		if(this.getLength()<longueur)
    		{
     
    			for (int i=0; i<str.length(); i++)
    			{	
    				car = str.charAt(i);
    				if(car==',')
    					car='.';
     
    				if (Character.isDigit (car)||(car=='.'))
    				{
     
    					sb.append(car);	
     
    				}
    				else
    				{
    					Toolkit.getDefaultToolkit().beep();
    					System.out.println("la caractere saisie n'est pas un chiffre");
    				}
    			}
    			//ajout du digit a la position off
    			super.insertString(offs, sb.toString(), a);
    			//on test si le nombre saisie depasse la valeur maximale
    			//si oui on annule l'ajout qui vient d'etre fait
    			try{
    				if ((Double.parseDouble(this.getText(0,this.getLength()))<min)||(Double.parseDouble(this.getText(0,this.getLength()))>max))
    				{
    					super.remove(offs, sb.length());
    					Toolkit.getDefaultToolkit().beep();
    				}
    			}
    			catch(Exception e)
    			{
    				System.out.println("erreur de saisie");
    				super.remove(offs, sb.length());
    				Toolkit.getDefaultToolkit().beep();
    			}
    		}
    		else
    		{
    			Toolkit.getDefaultToolkit().beep();
    			System.out.println("taille depasser");
    		}
    	}
     
    }

    je l'utilise comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jTextField1.setDocument(new FiltreFlottant(7,new Double("000.000"),new Double("999.999")));

    Merci à la personne qui l'a pondu (je retrouve plus son post )

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

Discussions similaires

  1. [Debutant] Expression réguliere
    Par grizzz dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 17/08/2007, 16h14
  2. expression réguliere
    Par htristra dans le forum C
    Réponses: 11
    Dernier message: 06/09/2005, 22h33
  3. expression réguliere en c++
    Par alambics dans le forum MFC
    Réponses: 9
    Dernier message: 10/03/2004, 20h19
  4. expression réguliere
    Par alambics dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/03/2004, 13h52

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