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 :

[JTextfiled] creation de filtre


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 [JTextfiled] creation de filtre
    bonjour,
    j'ai lu plusieurs documentations à ce sujet la et j'ai trouvé un exemple qui permettait de se restreinde a la saisie de nombre.

    je l'ai modifié afin de limiter le nombre à saisir par sa taille ce qui marche ainsi que l'émission d'un bip de signalement et la j'essais actuellement de rajouter un 2eme prarametre afin de fixer une valeur maximale

    j'arrive à recuperer la taille du champ saisie dans le jtextfiled mais pas son contenure pour faire la comparaison

    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
    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
     
    import java.awt.Toolkit;
     
     
    /****
     * Classe DDocumentNumber : permet de personnaliser la gestion du "model" des composants Texte
     *        proposee dans l'api de swing 
     *
     ****/
     
     
    import javax.swing.text.*;
    import javax.swing.text.DefaultEditorKit.BeepAction;
    import javax.swing.*;
    import java.awt.BorderLayout;
     
    public class Filtre extends PlainDocument
    {
    	private int longeur;
    	private String nombre;
    	private int valeur;
                 private int max; 
    	public Filtre(int taille,int max)
    	{
    	   super ();
    	   this.longeur = taille;
                    this.max = 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;
    		nombre="";
    		if(offs<longeur)
    		{
     
    			for (int i=0; i<str.length(); i++)
    			{	
    				car = str.charAt(i);
     
    				if (Character.isDigit (car))
    				{	
    					sb.append(car);	
    					System.out.println("str : "+str);
    				}
    				else
    				{
    					Toolkit.getDefaultToolkit().beep();
    					System.out.println("la caractere saisie n'est pas un chiffre");
    				}
    			}
    			super.insertString(offs, sb.toString(), a);
    			System.out.println("sb : "+ sb);
    			System.out.println("this.getLength() : "+ this.getLength());
     
     
    		}
    		else
    			Toolkit.getDefaultToolkit().beep();
    	}
     
    }

  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
    "str" c'est pas le contenu de ton champs texte?
    Tu le transformes en nombre et tu compares à ta valeur max...

  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
    non jai deja tester str contient la caractere courant excatement comme sb

    je n'aurai pas poster sans avoir tester differentes chose avant :p

  4. #4
    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
    Oups, j'avais pas vu que c'était la méthde insertString().
    J'ai pas l'habitude d'utiliser les Document, mais au pire, tu peux ajouter un KeyListener, un FocusListener ou autre sur ton champs texte pour qu'à la validation, tu compares la valeur saisie avec ta limite max...

    [EDIT]
    Et en utilisant la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getText(int offset, int length)
    de la classe AbstractDocument?

  5. #5
    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'ai teste un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    getText(int offset, int length
    mais sans succes vais me documenter un peu dessus
    resultat afficher pour cette portion de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    for(int i =0;i<this.getLength();i++)
    {
    	nombre=nombre+this.getText(offs,i);
    	System.out.println("nombre : "+nombre);
    	System.out.println("this.getText(offs,0)"+this.getText(offs,0));
    	System.out.println("this.getText(offs,1)"+this.getText(offs,1));
    	System.out.println("this.getText(offs,2)"+this.getText(offs,2));
    }
    avce la saisie 4564
    j'obtient :
    str : 4
    sb : 4
    this.getLength() : 1
    nombre :
    this.getText(offs,1)4

    str : 5
    sb : 5
    this.getLength() : 2

    nombre :
    this.getText(offs,1)5


    nombre : 5

    this.getText(offs,1)5


    str : 6
    sb : 6
    this.getLength() : 3
    k = 0
    nombre :
    this.getText(offs,1)6
    this.getText(offs,2)6

    aucun resultat coherant.

    pour repondre a ce que tu me disais sur focus listener et autre je voudrais evite de passer au maximum par la validation en eleminant a la saisie afin de simplifier la manipulation de toute mes JPanel de mon interface dynamique d'ou l'utilsation de filtre.

    voila le ptit bout de code pour utiliser cette classe si tu as le courage de faire des test :p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    saZoneTelephone = new JTextField(new Filtre(10),"",TAILLE_MAX);

  6. #6
    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
    Utilise getText() avec la longueur de ton champs texte comme paramètre "length", afin de récupérer toute la chaîne de caractère saisie.

    Sinon tu as ceci

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/11/2010, 22h23
  2. [AC-2007] Creation de filtres (listes deroulantes) dans un etat
    Par btks59 dans le forum IHM
    Réponses: 2
    Dernier message: 01/08/2009, 14h49
  3. Creation d'un filtre entre 2 dates
    Par julien2602 dans le forum Designer
    Réponses: 4
    Dernier message: 09/01/2008, 11h05
  4. Filtres pour creation d'état (Access 2000)
    Par applefield dans le forum IHM
    Réponses: 13
    Dernier message: 05/07/2007, 16h39
  5. Creation d'un filtre directshow pour Matrox Orion
    Par Greutzeb dans le forum DirectX
    Réponses: 5
    Dernier message: 29/10/2004, 13h27

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