Publié le 07/09/2010
Auteur axel
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Filtrer les caracteres dans un JTextField

Pour controler les caractères saisies par un utilisateur, JAVA dispose de plusieurs type de filtres. Une solution consiste à n'autoriser que les caractères que l'on souhaite dans une zone de saisie en ajoutant un addKeyListener. Le listener permet d'avoir un evenement à chaque fois qu'une touche du clavier est appuyée.

Controler les touches du clavier

Dans cet exemple, un listener est ajouté pour filtrer les touches dans un JTextField . Ainsi à chaque fois que l’utilisateur appuie sur une touche du clavier, un évènement est déclenché que l'on peut intercepter dans une class JAVA. Dans notre cas, voyons comment :
- obliger à ne saisir que des chiffres (jTextField_numeric),
- limiter la taille d'un JTextField (jTextField_maxlength).

import java.awt.event.KeyEvent;
 
/**
 * Filtrer les touches du clavier
 * http://www.fobec.com/java/993/filtrer-caracteres-dans-jtextfield.html
 * 
 * @author Axel 2010
 */
public class TextFieldFilter extends javax.swing.JFrame {
 
    /** Creates new form TextFieldFilter */
    public TextFieldFilter() {
        initComponents();
        //Ajouter le listener pour avoir que des chiffres
        jTextField_numeric.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(KeyEvent evt) {
                char c = evt.getKeyChar();
                //le caractère est numérique
                if (c >= '0' && c <= '9') {
                    // System.out.println(evt);
                } else {
                    //suppression du caractère
                    evt.consume();
                }
            }
        });
 
        //Ajouter un listener pour limiter la taille à 5 caractères
        jTextField_maxlength.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(KeyEvent evt) {
                int len=jTextField_maxlength.getText().length();
 
                if (len>=5) {
                  evt.consume();  
                }                
            }
        });
    }                    
 
    /**
     * Exemple
     */
    public static void main(String args[]) {
       final TextFieldFilter frame = new TextFieldFilter();
        frame.setDefaultCloseOperation(TextFieldFilter.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
 
} 


Dans les deux cas, la meme technique est utilisée:
- intercepter l’événement d'appui d'une touche du clavier avec keyTyped(KeyEvent evt),
- définir sa règle de validation du caractère saisie,
- le cas écheant retirer le caractère saisi en supprimer le message avec evt.consume().

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
java - sources
Mise a jour
07/09/2010
Visualisation
vu 4467 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Alpcom dans java

Salut , juste signaler une petite faute de frappe dans mouseDragged
ce n'est pas int y = p.y - newPos.x;
int y = p.y - newPos.y; !! des comportements curieux apparaissaient sinon merci beaucoup...

Publié par etoiliste010 dans java

BONSOIR le code compile mais
Grave: null
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. gd4sm1845967wib.6

at com.sun.mail.smtp.SMTPTransport.i...

Publié par Axel dans java

Bonjour Kezouille,
je viens de tester sur notre LAN (serveur Windows 7), la surveillance a l'air de marcher.
De votre cote, s'agit-il d'un serveur sous Windows ou sous Linux ?
Pouvez-vou...

Publié par Helo dans java

SVP Comment faire fonctionner le bouton pause ?

Publié par Kachwahed dans CMS

Merci, ca marche avec moi, mais apès avoir changer:
Edit1.Text := Format('%d bits, %d x %d',[Bits, HRes, VRes]);
par:
Edit1.Text := Format('%d bits, %d x %d',[Bits, HorizRes, VertRes]);...