L'API native Java ne prend pas en charge la définition de raccourcis clavier globaux pour les applications. Pour implémenter des raccourcis clavier globaux, vous devez utiliser JNI, ce qui implique d'écrire du code C/C++, ce qui est un peu difficile pour la plupart des javaneurs qui ne sont pas familiers avec C/C++. Heureusement, quelqu'un à l'étranger l'a déjà implémenté et publié en tant que package Java tiers. Grâce à cela, nous pouvons facilement définir des raccourcis clavier globaux sans écrire de code C/C++.
Il semble que le site officiel de jintellitype soit actuellement inaccessible. Le téléchargement est disponible ici : //www.VeVB.COm/softs/217788.html.
Jintellitype se compose de deux parties, l'une est le fichier jar jintellityp écrit en Java et l'autre est le fichier dll compilé écrit en C/C++. Il existe deux fichiers dll, un pour les systèmes 32 bits et 64 bits. Lors de l'utilisation de jintellitype, après avoir intégré le fichier jar jintellitype dans le projet, je ne savais pas où placer le fichier dll. J'ai essayé de l'exécuter. Selon le message d'erreur, il s'est avéré que le fichier dll était nécessaire. être placé sous le package du projet com.melloware.jintellitype. Il est recommandé d'ajouter les deux fichiers dll en même temps, afin que votre programme puisse être compatible avec les systèmes 32 bits et 64 bits, et que vous n'ayez besoin d'aucun traitement supplémentaire.
Collez mon petit code démo :
package com.jebysun.globlehotkey ; importer java.awt.Insets ; importer java.awt.event.ActionEvent ; importer java.awt.event.ActionListener ; importer javax.swing.JFrame ; .JOptionPane ; importer com.melloware.jintellitype.HotkeyListener ; com.melloware.jintellitype.JIntellitype; /** * Utilisez JIntellitype pour implémenter les paramètres globaux des raccourcis clavier* @author Jeby Sun * */ public class GlobleHotKeyDemo extends JFrame { private static final long serialVersionUID = 1L //Définir l'identification du raccourci clavier pour la définition de plusieurs raccourcis clavier, distingue les raccourcis clavier enfoncés par l'utilisateur lors de la gestion des événements public static final int FUNC_KEY_MARK = 1 public static final int; EXIT_KEY_MARK = 0; JButton msgBtn; JButton exitBtn; public GlobleHotKeyDemo() { this.setTitle("Paramètres globaux des raccourcis clavier"); this.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE); msgBtn = new JButton("Boîte contextuelle (Alt+S)"); //Définir les marges des boutons msgBtn.setMargin(new Insets(0,0,0,0)); ( 20, 20, 120, 30); msgBtn.addActionListener (nouveau ActionListener()) { @Override public void actionPerformed(ActionEvent e) { showMessage(); } }); this.add(msgBtn); exitBtn = new JButton("Exit (Alt+Q)"); 0,0,0)); exitBtn.setFocusable(false); exitBtn.setBounds(160, 20, 120, 30); exitBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //Étape 1 : Enregistrez le raccourci clavier. Le premier paramètre représente l'identification du raccourci clavier. Sinon, il est 0. Le troisième paramètre est le raccourci clavier principal défini. (FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S'); JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q'); //Étape 2 : Ajouter un écouteur de raccourci clavier JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() { @Override public void onHotKey(int markCode) { switch (markCode) { case FUNC_KEY_MARK : showMessage(); cas EXIT_KEY_MARK : System.exit(0); } } }); this.setVisible(true); } public void showMessage() { JOptionPane.showMessageDialog(null, "Même si vous réduisez la fenêtre, appuyez sur la touche de raccourci Alt+S pour afficher la boîte de dialogue ! ", "Titre de la boîte contextuelle", JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] args) { new GlobleHotKeyDemo(); } }
En fait, utiliser jintellitype est très simple, seulement 3 étapes :
Étape 1 : ajoutez des packages jar et des fichiers dll ;
Étape 2 : Enregistrez les touches de raccourci ;
Étape 3 : Ajoutez un écouteur de raccourci clavier et implémentez la méthode d'interface ;