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

Intercepter tous les evenements clavier

Les évènements peuvent etre intercepter dans une application JAVA au meme titre qu'un Hook sous Windows. Dans cet exemple, voyons comment récupérer l'appui d'une touche clavier dans une fonction globale à l'ensemble de la frame.

Hook clavier pour intercepter un caractère

L'ajout d'un listener sur KeyboardFocusManager permet d'intercepter les touches appuyées sur le clavier au plus tot. Sur l'ensemble du JFrame, l'écouteur envoie les évènements clavier avant d'ętre transmis au control détenant la focalisation.
Dans l'exemple, toutes les touches de la fenętre sont interceptées et modifiées en caractère majuscule ou bloquer lorsqu'elles corresponde à des chiffres.
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;
 
/**
 * Filtrer les touches du clavier
 * http://www.fobec.com/java/992/intercepter-tous-evenements-clavier.html
 * 
 * @author Axel 2010
 */
public class KeybordHook extends javax.swing.JFrame {
 
    /** Creates new form KeybordHook */
    public KeybordHook() {
        initComponents();
        //Ajouter le listener pour avoir que des chiffres
        KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
            public boolean dispatchKeyEvent(KeyEvent e) {
                if (e.getID() == KeyEvent.KEY_TYPED) {
                    char c = e.getKeyChar();
                    System.out.println("Appui de la touche: " + c);
 
                    // Filtre: mettre toutes les lettres en majuscules
                    if (Character.isLowerCase(c)) {
                        c = Character.toUpperCase(c);
                        e.setKeyChar(c);
                        return false;
                    }
 
                    //Filtre: supprimer les chiffres
                    if (Character.isDigit(c)) {
                        return true;
                    }
                }
                //par defaut
                return false;
            }
        });
 
    }                            
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        final KeybordHook frame = new KeybordHook();
        frame.setDefaultCloseOperation(KeybordHook.EXIT_ON_CLOSE);
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
 
}


L'ajout d'un listener KeyboardFocusManager permet d'agir de 2 manières sur les touches appuyées:
- modifier le caractère: dans notre exemple, toutes les caractères minuscules sont automatiquement transformées en caractères majuscules puis transmis à un JTextField par exemple,
- supprimer un message: un appui de touche peut etre supprimé de la liste des evenements, dans notre cas, toutes les nombres sont supprimés avec d'atteindre un controle de type JTextField.

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

Publié par Do dans tuto

Et lorsque l'on a un recordset a parcourir ? Que faut-il passer a la vue ? ligne par ligne ou un tableau ? ?
Le PHP est a lui seul deja un systeme de template :
>?php
echo $titre;
?>

Publié par Christophe dans CMS

je te propose d'améliorer la fonction
procedure TForm1.Button1Click(Sender: TObject);
begin
GetDesktopListViewHandle;
ListView_SetTextBkColor(hLV, $FFFFFFFF);
ListView_...

Publié par JMC dans logiciel

L'adresse donnée est celle du provider et non celle de l'utilisateur apparemment, il me localise a Braine l'Alleud et je me trouve à Huy ?
Sinon génial qui en est l'auteur ?
Cordia...

Publié par Fobec dans tuto

Les liens vers les feuilles de style sont definis dans le template. L'emplacement sur le FTP depend du CMS utilise, par exemple sous WordPress les fichiers sont dans le dossier '/wpcontent/themes'

Publié par coramarr dans java

Peut-on trouver des infos sur cette suite qui serait utilise en statistiques. Des documents ou ouvrages qui relatent les divers possibilites d'utilisation de cette suite.
Je suis un particulier ni...