JavaFx全局快捷鍵實現(Kotlin)


原文地址: JavaFx全局快捷鍵實現(Kotlin) | Stars-One的雜貨小窩

最近整款工具需要用到全局快捷鍵,搜集了下網上的資料,發現有個JIntellitype庫可以用來實現全局快捷鍵,下面記錄下個人的使用

JIntellitype只適用windows的全局快捷鍵綁定,並不能全平台支持!!

注:本文使用的Kotlin,Java版的可以參考下JIntellitype的文檔,

PS:后面我還發現有個jnativehook的庫,在github上的⭐還挺多的,文檔介紹其支持全平台的

然后使用文檔啥也沒有,參考的示例整了些沒能成功就放棄了,其例子也是給的swing,而不是javafx,我自己摸索了半天還報錯,就放棄了

使用

吐槽下,這個作者寫的文檔使用說明其實有點不是太明確,第一遍看過去人都懵的...

而且看網上的資料,都是自己去拷貝jar包,實際上作者已經把jar包發布在maven中央倉庫了,根本沒有必要手動去下載

JIntellitype此庫好像支持JDK8和JDK9

1.導入依賴

<dependency>
    <groupId>com.melloware</groupId>
    <artifactId>jintellitype</artifactId>
    <version>1.4.0</version>
</dependency>

2.注冊按鍵

我們以全局注冊個Ctrl+Shift+G的快捷鍵為例

//這里必須是大寫字母
val keyCode = 'G'.toInt() //這個其實是ASCII碼(G的ASCII碼數值為71)

//注意這個1,下面第三步的回調函數會根據這個來進行判斷
JIntellitype.getInstance().registerHotKey(1, JIntellitype.MOD_CONTROL + JIntellitype.MOD_SHIFT, keyCode)
  • JIntellitype.MOD_CONTROL Ctrl鍵
  • JIntellitype.JIntellitype.MOD_SHIFT Shift鍵
  • JIntellitype.MOD_ALT Alt鍵
  • JIntellitype.MOD_WIN Windows鍵

3.注冊按鍵監聽器

JIntellitype.getInstance().addHotKeyListener {
    if (it == 1) {
        //寫上觸發快捷鍵后的處理邏輯
        println("已按下快捷鍵")
    }
}

注意,addHotKeyListener中回調函數會返回一個數字,這個數字是用來區分不同的快捷鍵的,是在上面注冊按鍵的步驟中定義的

PS:如果想取消注冊,使用unregisterHotKey()方法即可,如下面所示

//1就是上面注冊用的
JIntellitype.getInstance().unregisterHotKey(1)

4.下載dll文件

點擊dll文件下載

上面我把32位和64位的dll文件都打包上傳到藍奏雲了,各位需要自取

下載下來后需要把文件放在指定路徑中,如下圖所示

測試

隨便在一個地方,按下設置好的快捷鍵就會成功觸發


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM