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().