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

 Java Discussion :

Filtrage de saisie


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut Filtrage de saisie
    Bonjour je dois faire un petit programme avec un jTextField où l'utilisateur saisie une expression.
    J'aimerais que l'utilisateur ne puisse saisir que des caractères tels que les chiffres, les signes(+,-,*,/) et les parenthèses mais je ne sais pas comment faire.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    utilise un JFormattedTextfield.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Je veux bien mais j'ai essayé et tout ce que j'ai reussi à faire c'était de faire un masque du genre il faut un caractère de tels type à tels position.
    Peut être que je ne sais pas l'utiliser ?????

  4. #4
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    tu pourrais redéfinir la méthode insertString de la classe Document

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    JTextField txt = new JTextField();
    Document myDoc = new PlainDocument() {
    	public void insertString(int offs, String str, AttributeSet a)
    		  throws BadLocationException
    	{
    		if (str.matches("[-\\+\\*\\/]"))
    			super.insertString(offs, str, a);
    	}
    };
    txt.setDocument(myDoc);

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Bon honnetement j'ai pas bien tout compris, j'vais essayer de me pencher dessus demain dans l'espoir de comprendre un peu mieux.
    Mais y'a pas une possibilité plus simple ???? inputVerifier dans les proprietés du jTextField ne pourrait pas me servir ???? Merci pour votre aide

  6. #6
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    salut,

    InputVerifier vérifie ce qui a été saisie quand la JTextField perd le focus, et donc l'utilisateur peut saisir ce qu'il veut, mais lorsqu'il voudra passer à un autre composant, il ne le pourra pas si sa saisie est invalide

    la méthode que je t'ai montré interdit carrément la saisie d'autres caractères que +-*/

    donc à toi de voir ce que tu veux

    et puis qu'est-ce que tu n'as pas compris, ce ne sont que 5 pauvres lignes

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Par défaut
    Bin en faite j'vois pas trop où est-ce qu'il faut mettre ce code. En plus faut que j'importe plusieurs classes, je suppose que c'est normal ? Est-ce que txt c'est le nom du jTextField où on applique le filtre ???

  8. #8
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    JTextField txt = new JTextField();    //la zone de texte où tu veux filtrer la saisie
    Document myDoc = new PlainDocument() {
    	public void insertString(int offs, String str, AttributeSet a)
    		  throws BadLocationException
    	{
    		if (str.matches("[-\\+\\*\\/]"))    //les caractères permis(-+*/)
    			super.insertString(offs, str, a);
    	}
    };
    txt.setDocument(myDoc);

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2019, 16h13
  2. [JComboBox] Filtrage automatique en fonction de la saisie
    Par donnadieujulien dans le forum Composants
    Réponses: 2
    Dernier message: 24/09/2011, 14h31
  3. Filtrage des valeurs saisies dans un JOptionPane
    Par Shurka dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 11/08/2007, 15h09
  4. [TP] Filtrage de caractères lors de la saisie
    Par gadalla dans le forum Turbo Pascal
    Réponses: 24
    Dernier message: 09/05/2007, 13h03
  5. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44

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