首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

使用 JIntellitype 實現 Java 全域熱鍵註冊

     編輯:Java 程式設計入門

Java 原生 API 不支援為應用程式註冊全域熱鍵。若要實現此功能,傳統做法需透過 JNI 撰寫 C/C++ 程式碼,對不熟悉原生開發的 Java 開發者門檻極高。所幸開源社群已提供 JIntellitype 第三方函式庫,封裝好底層實作,讓我們純 Java 即可輕鬆註冊全域熱鍵。

函式庫取得與專案配置

JIntellitype 官網可能無法存取,可從備份來源下載(如 JB51 下載頁)。函式庫包含兩部分:

  • jintellitype.jar:Java 介面層
  • 兩個 DLL 檔:JIntellitype.dll (32位元) 與 JIntellitype64.dll (64位元)

關鍵配置步驟:將兩個 DLL 檔同時放入專案的 com.melloware.jintellitype 套件目錄下。如此程式即可同時相容 32/64 位元系統,無需額外判斷邏輯。

完整示範程式碼

package com.jebysun.globlehotkey;

import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import com.melloware.jintellitype.HotkeyListener;
import com.melloware.jintellitype.JIntellitype;

/** 
 * 利用 JIntellitype 實現全域熱鍵設定
 * @author Jeby Sun
 */
public class GlobleHotKeyDemo extends 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;
    JButton exitBtn;

    public GlobleHotKeyDemo() {
        this.setTitle("全域熱鍵設定示範");
        this.setBounds(100, 100, 600, 400);
        this.setLayout(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // 彈出訊息按鈕 (Alt+S)
        msgBtn = new JButton("彈出框(Alt+S)");
        msgBtn.setMargin(new Insets(0,0,0,0));
        msgBtn.setFocusable(false);
        msgBtn.setBounds(20, 20, 120, 30);
        msgBtn.addActionListener(e -> showMessage());
        this.add(msgBtn);
        
        // 退出按鈕 (Alt+Q)
        exitBtn = new JButton("退出(Alt+Q)");
        exitBtn.setMargin(new Insets(0,0,0,0));
        exitBtn.setFocusable(false);
        exitBtn.setBounds(160, 20, 120, 30);
        exitBtn.addActionListener(e -> System.exit(0));
        this.add(exitBtn);
        
        // 步驟 1:註冊熱鍵
        // 參數:識別碼、修飾鍵、主鍵
        JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S');
        JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q');
        
        // 步驟 2:新增熱鍵監聽器
        JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {
            @Override
            public void onHotKey(int markCode) {
                switch (markCode) {
                    case FUNC_KEY_MARK:
                        showMessage();
                        break;
                    case EXIT_KEY_MARK:
                        System.exit(0);
                        break;
                }
            }
        });
        
        this.setVisible(true);
    }
    
    private void showMessage() {
        JOptionPane.showMessageDialog(null, 
            "就算把視窗最小化,按快捷鍵 Alt+S 也可以彈出提示框哦!", 
            "彈出框標題", 
            JOptionPane.INFORMATION_MESSAGE);
    }
    
    public static void main(String[] args) {
        new GlobleHotKeyDemo();
    }
}

三步驟快速上手

  1. 導入依賴:專案加入 JAR 並配置 DLL 檔案路徑
  2. 註冊熱鍵:呼叫 registerHotKey(id, modifiers, keyCode)
  3. 實作監聽:實作 HotkeyListener 介面處理觸發事件

常用修飾鍵常數

常數對應按鍵
MOD_ALTAlt 鍵
MOD_CONTROLCtrl 鍵
MOD_SHIFTShift 鍵
MOD_WINWin/Command 鍵

修飾鍵可組合使用,例如 MOD_ALT | MOD_CONTROL 代表 Alt+Ctrl 組合。

注意事項

  • 熱鍵為全域生效,即使應用程式最小化或失去焦點仍會觸發
  • 避免與系統保留熱鍵衝突(如 Alt+F4、Win+D 等)
  • 程式結束前建議呼叫 unregisterHotKey() 釋放資源
  • 部分殺毒軟體可能攔截全域鍵盤鉤子,需加入白名單
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved