第三方包jintellitype實現(xiàn)Java設(shè)置全局熱鍵
Java原生API并不支持為應(yīng)用程序設(shè)置全局熱鍵。要實現(xiàn)全局熱鍵,需要用JNI方式實現(xiàn),這就涉及到編寫C/C++代碼,這對于大多數(shù)不熟悉C/C++的javaer來說,有點困難。不過幸好,國外有人已經(jīng)實現(xiàn)了,發(fā)布成第三方j(luò)ava包,借此,我們可以很方便的設(shè)置全局熱鍵而不用編寫任何C/C++代碼。
jintellitype官網(wǎng)貌似目前訪問不到,這里提供下載:http://www.dbjr.com.cn/softs/217788.html。
jintellitype由兩部分組成,一部分是java寫的jintellityp的jar文件,另一部分是C/C++寫的已編譯好的dll文件,有兩個dll文件,分別是32位和64位系統(tǒng)的。在我使用jintellitype的過程中,把jintellitype的jar文件Build進項目后,不知道dll文件放哪,我試著運行,根據(jù)錯誤提示,原來需要把dll文件放到項目com.melloware.jintellitype包下。建議同時把兩個dll文件都加進去,這樣,你的程序就可以同時兼容32位和64位系統(tǒng),而你不需要任何額外的處理。
貼上我的小demo代碼:
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實現(xiàn)全局熱鍵設(shè)置
* @author Jeby Sun
*
*/
public class GlobleHotKeyDemo extends JFrame {
private static final long serialVersionUID = 1L;
//定義熱鍵標(biāo)識,用于在設(shè)置多個熱鍵時,在事件處理中區(qū)分用戶按下的熱鍵
public static final int FUNC_KEY_MARK = 1;
public static final int EXIT_KEY_MARK = 0;
JButton msgBtn;
JButton exitBtn;
public GlobleHotKeyDemo() {
this.setTitle("全局熱鍵設(shè)置");
this.setBounds(100, 100, 600, 400);
this.setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
msgBtn = new JButton("彈出框(Alt+S)");
//設(shè)置按鈕邊距
msgBtn.setMargin(new Insets(0,0,0,0));
msgBtn.setFocusable(false);
msgBtn.setBounds(20, 20, 120, 30);
msgBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showMessage();
}
});
this.add(msgBtn);
exitBtn = new JButton("退出(Alt+Q)");
exitBtn.setMargin(new Insets(0,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);
}
});
this.add(exitBtn);
//第一步:注冊熱鍵,第一個參數(shù)表示該熱鍵的標(biāo)識,第二個參數(shù)表示組合鍵,如果沒有則為0,第三個參數(shù)為定義的主要熱鍵
JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S');
JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q');
//第二步:添加熱鍵監(jiān)聽器
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);
}
public void showMessage() {
JOptionPane.showMessageDialog(null, "就算把窗口最小化,按快捷鍵Alt+S也可以彈出提示框哦!", "彈出框標(biāo)題", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args) {
new GlobleHotKeyDemo();
}
}
其實,jintellitype的使用非常簡單,就3個步驟:
第一步:添加jar包和dll文件;
第二步:注冊熱鍵;
第三步:添加熱鍵監(jiān)聽器,實現(xiàn)接口的方法;
相關(guān)文章
SpringBoot集成內(nèi)存數(shù)據(jù)庫hsqldb的實踐
hsqldb只需要添加對應(yīng)的依賴,然后在配置文件進行配置。不需要安裝一個數(shù)據(jù)庫,本文就來介紹一下具體使用,感興趣的可以了解一下2021-09-09
Java reservedcodecachesize虛擬機參數(shù)案例詳解
這篇文章主要介紹了Java reservedcodecachesize虛擬機參數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
java實現(xiàn)猜數(shù)字小游戲(Swing版)
這篇文章主要介紹了java實現(xiàn)猜數(shù)字小游戲,Swing編程版的猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05
Java簡單計時的實現(xiàn)案例(可以用來限時循環(huán))
這篇文章主要介紹了Java簡單計時的實現(xiàn)案例(可以用來限時循環(huán)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

