Собственный API Java не поддерживает настройку глобальных горячих клавиш для приложений. Для реализации глобальных горячих клавиш вам необходимо использовать JNI, что предполагает написание кода C/C++, что немного сложно для большинства Java-программистов, не знакомых с C/C++. К счастью, кто-то за границей уже реализовал его и опубликовал как сторонний Java-пакет. Благодаря этому мы можем легко устанавливать глобальные горячие клавиши без написания кода на C/C++.
Похоже, официальный сайт jintellitype на данный момент недоступен. Скачать можно здесь: //www.VeVB.COm/softs/217788.html.
Jintellitype состоит из двух частей: одна — это jar-файл jintellityp, написанный на Java, а другая — скомпилированный файл dll, написанный на C/C++. Существует два файла dll: один для 32-битных и 64-битных систем. В процессе использования jintellitype, после встраивания jar-файла jintellitype в проект, я не знал, куда девать dll-файл. Попробовал его запустить. По сообщению об ошибке оказалось, что нужен dll-файл. быть помещен в пакет проекта com.melloware.jintellitype. Рекомендуется добавлять оба файла dll одновременно, чтобы ваша программа была совместима как с 32-битными, так и с 64-битными системами и вам не требовалась дополнительная обработка.
Вставьте мой небольшой демонстрационный код:
пакет com.jebysun.globlehotkey; импорт java.awt.Event.ActionEvent; импорт javax.event.ActionListener; импорт javax.swing.JFrame; .JOptionPane импорт com.melloware.jintellitype.HotkeyListener импорт; com.melloware.jintellitype.JIntellitype; /** * Используйте JIntellitype для реализации глобальных настроек горячих клавиш* @author Jeby Sun * */ public class GlobleHotKeyDemo расширяет JFrame { Private static Final Long SerialVersionUID = 1L //Определение идентификации горячих клавиш для При установке нескольких; горячие клавиши, различать горячие клавиши, нажимаемые пользователем при обработке событий public static Final int FUNC_KEY_MARK = 1 public static Final int; EXIT_KEY_MARK = 0; JButton msgBtn; public GlobleHotKeyDemo() { this.setTitle("Глобальные настройки горячих клавиш"); this.setBounds(100, 100, 600, 400); this.setLayout(null); JFrame.EXIT_ON_CLOSE); msgBtn = new JButton("Всплывающее окно (Alt+S)"); //Установим поля кнопки msgBtn.setMargin(new Insets(0,0,0,0)); msgBtn.setFocusable(false); ( 20, 20, 120, 30) msgBtn.addActionListener (новый ActionListener()); { @Override public void actionPerformed(ActionEvent e) { showMessage() } }); this.add(msgBtn); exitBtn = new JButton("Exit (Alt+Q)"); 0,0,0)); выходBtn.setFocusable(ложь); выходBtn.setBounds(160, 20, 120, 30); exitBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); //Шаг 1. Зарегистрируйте горячую клавишу. Первый параметр представляет собой идентификацию горячей клавиши. Второй параметр представляет собой комбинацию клавиш. Если нет, то это значение равно 0. Третий параметр — это определенная основная горячая клавиша. (FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S'); JIntellitype.MOD_ALT, (int)'Q'); //Шаг 2. Добавьте прослушиватель горячих клавиш JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() { @Override public void onHotKey(int markCode) { switch (markCode) {case FUNC_KEY_MARK: showMessage(); случай EXIT_KEY_MARK: System.exit(0); } } }); this.setVisible(true); } public void showMessage() { JOptionPane.showMessageDialog(null, «Даже если вы свернете окно, нажмите сочетание клавиш Alt+S, чтобы открыть окно с подсказкой! ", "Заголовок всплывающего окна", JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] args) { new GlobleHotKeyDemo(); } }
На самом деле, использовать jintellitype очень просто, всего 3 шага:
Шаг 1. Добавьте jar-пакеты и файлы dll;
Шаг 2: Зарегистрируйте горячие клавиши;
Шаг 3. Добавьте прослушиватель горячих клавиш и реализуйте метод интерфейса;