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 3024 fois
Public
Internaute
Auteur de la publication
Axel
Membre junior
Auteur de 51 articles
|BIO_PSEUDO|
Commentaires récents

Publié par roundge dans php5

Bien ! Merci pour cette petite classe en php bien pratique !
J'avais 2000 photos libres de droits à télécharger sur un site, dans un dossier ou les fichiers ne sont pas list&e...

Publié par Fobec dans java

As-tu essaye sans le parametre de la cle ?
(supprimer la ligne url += "&key=" + this.ApiKey;)
A priori, cela fonctionne sans aucune authentification sur l'api ;)

Publié par Bonjour dans java

Joli travail!
Par contre, savez vous que votre barre de progression s'arrête à un certain pourcentage?

Publié par Arthur dans java

Salut!
J'ai repris ton code pour un projet mais en testant le programme rien ne s'affiche. Pourquoi ?
Dois-je mettre a jour quelque chose ? Importer ?
La seule modification que j'...

Publié par Vincent dans tuto

Sympa votre petit script :) Oui il existe des bibliotheques deja toutes faites mais elles sont en general 50x plus lourdes que ce petit bout de code qui fait exactement ce qu'il faut. En plus votr...