A API nativa Java não oferece suporte à configuração de teclas de atalho globais para aplicativos. Para implementar teclas de atalho globais, você precisa usar JNI, que envolve escrever código C/C++, o que é um pouco difícil para a maioria dos javaers que não estão familiarizados com C/C++. Felizmente, alguém no exterior já o implementou e publicou como um pacote Java de terceiros. Com isso, podemos definir facilmente teclas de atalho globais sem escrever nenhum código C/C++.
Parece que o site oficial do jintellitype está inacessível no momento. O download está disponível aqui: //www.VeVB.COm/softs/217788.html.
Jintellitype consiste em duas partes, uma é o arquivo jar jintellityp escrito em Java e a outra é o arquivo dll compilado escrito em C/C++. Existem dois arquivos dll, um para sistemas de 32 bits e 64 bits. No processo de uso do jintellitype, depois de construir o arquivo jar jintellitype no projeto, não sabia onde colocar o arquivo dll. Tentei executá-lo. De acordo com a mensagem de erro, descobri que o arquivo dll precisava ser executado. ser colocado no pacote do projeto com.melloware.jintellitype. Recomenda-se adicionar os dois arquivos DLL ao mesmo tempo, para que seu programa seja compatível com sistemas de 32 e 64 bits e você não precise de nenhum processamento adicional.
Cole meu pequeno código de demonstração:
pacote com.jebysun.globlehotkey; importar java.awt.Insets; importar java.awt.event.ActionEvent; .JOptionPane importar com.melloware.jintellitype.HotkeyListener; com.melloware.jintellitype.JIntellitype; /** * Use JIntellitype para implementar configurações globais de teclas de atalho* @author Jeby Sun * */ public class GlobleHotKeyDemo extends JFrame { private static final long serialVersionUID = 1L; teclas de atalho, distinguem as teclas de atalho pressionadas pelo usuário no tratamento de eventos public static final int FUNC_KEY_MARK = 1; EXIT_KEY_MARK = 0; JButton msgBtn; JButton exitBtn; public GlobleHotKeyDemo() { this.setLayout(null); JFrame.EXIT_ON_CLOSE); msgBtn = new JButton("Caixa pop-up (Alt+S)"); //Definir margens do botão msgBtn.setMargin(new Insets(0,0,0,0)); (20, 20, 120, 30); msgBtn.addActionListener(novo ActionListener()); { @Override public void actionPerformed(ActionEvent e) { showMessage() } }); 0,0,0)); exitBtn.setFocusable(falso); 120, 30); exitBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //Etapa 1: Registrar a tecla de atalho. O primeiro parâmetro representa a identificação da tecla de atalho. Caso contrário, é 0. O terceiro parâmetro é a tecla de atalho principal definida. (FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S'); JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q'); //Etapa 2: Adicionar um ouvinte de tecla de atalho JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() { @Override public void onHotKey(int markCode) { switch (markCode) { case FUNC_KEY_MARK: showMessage(); caso de interrupção EXIT_KEY_MARK: System.exit(0); } } }); this.setVisible(true); } public void showMessage() { JOptionPane.showMessageDialog(null, "Mesmo se você minimizar a janela, pressione a tecla de atalho Alt+S para abrir a caixa de prompt! ", "Título da caixa pop-up", JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] args) { new GlobleHotKeyDemo(); } }
Na verdade, usar o jintellitype é muito simples, apenas 3 passos:
Passo 1: Adicione pacotes jar e arquivos DLL;
Passo 2: Cadastre teclas de atalho;
Etapa 3: adicione um ouvinte de tecla de atalho e implemente o método de interface;