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

avec Java Discussion :

methode permettant de saisir rien que les lettres et beeper si impossible


Sujet :

avec Java

  1. #1
    Membre habitué Avatar de happyboon
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 192
    Points : 166
    Points
    166
    Par défaut methode permettant de saisir rien que les lettres et beeper si impossible
    Bonjour la communauté JAVA,
    j'ai un problème pour créer une méthode qui permettrait de controler les entrées utilisateurs.
    Ceux ci ne peuvent saisir que les chiffres et s'ils essaient de taper autre chose, il ya emission d'un beep et le caractère interdit ne sera pas affiché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       
    public   static void controleCaseChiffre(java.awt.event.KeyEvent evt){
                char c=evt.getKeyChar();  
                if(!Character.isDigit(c)||c==KeyEvent.VK_DELETE||c==KeyEvent.VK_BACK_SPACE)
                {   
               getToolkit().beep();
                evt.consume();
                }
                
    }
    Le problème est le getToolkit().beep(); est souligné en rouge avec comme message "une methode non static ne peut être référencée dans un context static"
    Ce que je voudrais c'est emettre un beep en utilisant une méthode static par exemple ou trouver une tout autre solution pour emettre un beep.
    Un grand merci vraiment à ceux qui pourront m'aider par ce que là je suis complètement bleu

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    La méthode beep() est une méthode de l'instance singleton de classe Toolkit : ce n'est pas une méthode statique de cette classe. Pour l'appeler Toolkit.getDefaultToolkit().beep();.

    Par ailleurs, tu peux utiliser les DocumentFilter plutôt que de bidouiller avec un écouteur d'évenement, ce qui simplifie la façon de traiter la saisie (ne pas oublier qu'on peut faire coller aussi) :

    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
    	public static void main(String[] args) {
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JTextField field = new JTextField();
     
     
    		((AbstractDocument)field.getDocument()).setDocumentFilter(new DocumentFilter() {
    			@Override
    			public void insertString(FilterBypass fb, int offset,
    					String string, AttributeSet attr)
    					throws BadLocationException {
    				string=filter(string);
    				if ( string.length()>0 ) { // s'il n'y plus rien dans la chaine, on ne fait rien
    					super.insertString(fb, offset, string, attr);
    				}
    			}
    			@Override
    			public void replace(FilterBypass fb, int offset, int length,
    					String text, AttributeSet attrs)
    					throws BadLocationException {
    				String string = filter(text);
    				if ( string.length()>0 ) { // remplace uniquement par les caractères non chiffre
    				//if (string.equals(text)) { // interdit tout remplacement s'il y a au moins un chiffre
    					super.replace(fb, offset, length, text, attrs);
    				}
    			}
    			private String filter(String string) {
    				StringBuilder sb=new StringBuilder();
    				boolean beep=false;
    				for(int i=0;i<string.length();i++) {
    					char c=string.charAt(i);
    					if ( Character.isDigit(c) ) {
    						beep=true;
    					}
    					else {
    						sb.append(c);
    					}
    				}
    				if ( beep ) {
    					Toolkit.getDefaultToolkit().beep();
    				}
    				return sb.toString();
    			}
    		});
     
    		frame.add(field);
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre habitué Avatar de happyboon
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 192
    Points : 166
    Points
    166
    Par défaut grand merci
    merci joel.drigo
    mon problème est résolu j'ai encore beaucoup à apprendre en java
    Bonne suite de journée

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

Discussions similaires

  1. Enum contenant que les lettre alphabetiques
    Par freestyler1982 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/08/2010, 21h35
  2. N'extraire que les lettres d'un champs
    Par johweb dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/04/2009, 19h45
  3. Réponses: 3
    Dernier message: 28/04/2008, 14h57
  4. [VBA-E]afficher les cellules et rien que les cellules.
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/03/2007, 16h17
  5. saisir rien que des chiffres dans un Tedit
    Par trop2pb dans le forum Delphi
    Réponses: 5
    Dernier message: 27/07/2006, 13h46

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