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

Interfaces Graphiques en Java Discussion :

InputVerifier ne fonctionne pas avec JFormatTextField


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Par défaut InputVerifier ne fonctionne pas avec JFormatTextField
    Bonjour,

    Je souhaite que l'on puisse entrer uniquement des lettres dans un JTextField ou plutôt dans un JFormatTextFiead.

    J'ai donc créé la classe suivante mais ça ne fonctionne pas, même après avoir appelé la méthode verify.

    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
    import javax.swing.*;
     
    public class TextOnlyVerifier extends InputVerifier {
     
    	private String oldValidValue = new String("");
     
    	@Override
    	public boolean verify(JComponent input) {
    		JFormattedTextField jftCheckText = null; 		
     
    		if (input instanceof JFormattedTextField) {
     
    			jftCheckText = (JFormattedTextField) input;
    			String text = jftCheckText.getText();
    			for (int i = text.length() - 1; i >= 0; i--) {
    				if ( ! Character.isLetter(text.charAt(i))) {
    					jftCheckText.setText(oldValidValue);
    					System.out.println("valeur : "+text + " invalide");
    					return false;
    				}
    			}
    			oldValidValue = text;
    			System.out.println("Valeur : "+text +"valide");
    			return ((JFormattedTextField) input).isEditValid();
    		}
    		else {
    			System.err.println("La vérification n'a pas fonctionner Le compesant n'est pas un JFormatTextFild : "+input.getName());
    			return false;
    		}
    	//}
    		@Override
    		public boolean shouldYieldFocus(JComponent input) {
    			return verify(input);
    		}
     
    	}
    Quelqu'un saurait-il m'expliquer ce qui ne va pas ?

    J'ai prévu que mon code soit exécuté quand l'utilisateur sort de la zone de texte mais apparement ce n'est pas le cas.
    Je fais cela dans le but de bloquer les touches qui ne sont pas des lettres.

    Pourquoi cela ne marche pas ?

    Est-ce qu'avec la classe Document, vous pensez que j'aurais plus de chance ?

    Merci d'avance pour votre aide.

    Salutations

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 354
    Par défaut solution
    tu dois utiliser un objet MaskFormatter:

    # indique un chiffre ;
    ' indique un caractère d'échappement ;
    U indique une lettre (les minuscules sont changées en majuscules) ;
    L indique une lettre (les majuscules sont changées en minuscules) ;
    A indique un chiffre ou une lettre ;
    ? indique une lettre ;
    * indique que tous les caractères sont acceptés ;
    H indique que tous les caractères hexadécimaux sont acceptés (0->9, a->f ou A->F).

    Et déclarer ton JFormattedTextField comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try{
       MaskFormatter maskQuatreLettres = new MaskFormatter("????");
       JFormattedTextField jtf = new JFormattedTextField(maskQquatreLettres);
    }
    catch(ParseException e){
       e.printStackTrace();
    }
    Bonne continuation !

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/01/2007, 18h19
  2. [ImageMagick] imagecreatefromjpeg() ne fonctionne pas avec tous mes jpg
    Par guy2004 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 23/08/2006, 09h41
  3. evenement onclick ne fonctionne pas avec explorer??
    Par nath-0-0 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/03/2006, 12h13
  4. Réponses: 7
    Dernier message: 24/01/2006, 11h03
  5. window.resizeTo ne fonctionne pas avec firefox?
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 15h07

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