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 et FormatterFactory


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut jFormattedTextField et FormatterFactory
    NetBeans 5.0, / linux CentOS 4

    Salut tous !

    Depuis quelques jours, je me bats avec le jFormattedTextField sans arriver à lui fournir le moindre format...
    properties / FormatterFactory devrait faire l'affaire apparemment,
    mais pas moyen de lui dire ce que je veux : un integer, un float, un currency, un mot de quatre lettres, un nombre de trois chiffres, etc.

    J'ai lu des tas d'explications, pas tout compris, pas trouvé un seul exemple d'utilisation avec NetBeans (mal cherché ?).

    Au secours !
    si quelqu'un pouvait nous poster un exemple ça serait bien...

    Merci d'avance !

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    As-tu regarder le tuto Sun sur les JFormattedTextField et notamment la partie "Using mask formatter"?

  3. #3
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    j'avais deja poster dans le post "source" un filtre pour JTextFiled ,je j'ai modifie il prend mintenant une valeur minimum , maximal ainsi qu'une taille .

    je le format avec un Double et je regarde si je n'ai qu'une virgule ou un seul point.
    si tu la modifie tu pourras faire ce que tu veux avec je pense.

    cette classe s'utilise de cette maniere suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /**
                             *  creation du jtextFiled avec son filtre
                             * taille : represente le nombre de digit pouvant etre saisie par l'utilisateur
                             * ZERO : represente le texte d'acueil du champ qui sera a saisir par l'utilisateur
                             * TAILLEJTextField : taille standart de tout des JTextFiels
                             */		
     
    			JTextField jtextfiled = new JTextField(new FiltreFlottant((taille),min,max),ZERO,TAILLEJTextField);
    avec ma classe filtre que voila
    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
    88
     
    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");
    		}
    	}
     
    }

Discussions similaires

  1. [JFormattedTextfield] Insérer du texte
    Par stailer dans le forum Composants
    Réponses: 6
    Dernier message: 09/08/2005, 11h55
  2. [JFormattedTextField] Utilisation
    Par bartmarley dans le forum Composants
    Réponses: 3
    Dernier message: 28/01/2005, 22h53
  3. [JFormattedTextField ]validité d'une adresse mail
    Par gege2mars dans le forum Composants
    Réponses: 3
    Dernier message: 14/01/2005, 16h55
  4. [JFormattedTextField]selectAll
    Par harold63 dans le forum Composants
    Réponses: 4
    Dernier message: 21/07/2004, 10h55
  5. [JFormattedTextField]Format spécial
    Par eraim dans le forum Composants
    Réponses: 13
    Dernier message: 22/04/2004, 10h20

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