欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

第三方包jintellitype實(shí)現(xiàn)Java設(shè)置全局熱鍵

 更新時(shí)間:2014年09月14日 10:28:17   投稿:hebedich  
本文主要介紹了,在java中使用第三方插件包jintellitype來(lái)實(shí)現(xiàn)全局熱鍵,非常的簡(jiǎn)單,但是很實(shí)用,有需要的朋友可以參考下,歡迎一起來(lái)參與改進(jìn)此項(xiàng)目

Java原生API并不支持為應(yīng)用程序設(shè)置全局熱鍵。要實(shí)現(xiàn)全局熱鍵,需要用JNI方式實(shí)現(xiàn),這就涉及到編寫(xiě)C/C++代碼,這對(duì)于大多數(shù)不熟悉C/C++的javaer來(lái)說(shuō),有點(diǎn)困難。不過(guò)幸好,國(guó)外有人已經(jīng)實(shí)現(xiàn)了,發(fā)布成第三方j(luò)ava包,借此,我們可以很方便的設(shè)置全局熱鍵而不用編寫(xiě)任何C/C++代碼。

  jintellitype官網(wǎng)貌似目前訪問(wèn)不到,這里提供下載:http://www.dbjr.com.cn/softs/217788.html。

  jintellitype由兩部分組成,一部分是java寫(xiě)的jintellityp的jar文件,另一部分是C/C++寫(xiě)的已編譯好的dll文件,有兩個(gè)dll文件,分別是32位和64位系統(tǒng)的。在我使用jintellitype的過(guò)程中,把jintellitype的jar文件Build進(jìn)項(xiàng)目后,不知道dll文件放哪,我試著運(yùn)行,根據(jù)錯(cuò)誤提示,原來(lái)需要把dll文件放到項(xiàng)目com.melloware.jintellitype包下。建議同時(shí)把兩個(gè)dll文件都加進(jìn)去,這樣,你的程序就可以同時(shí)兼容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實(shí)現(xiàn)全局熱鍵設(shè)置
 * @author Jeby Sun
 *
 */
 public class GlobleHotKeyDemo extends JFrame {
 
   private static final long serialVersionUID = 1L;
   
   //定義熱鍵標(biāo)識(shí),用于在設(shè)置多個(gè)熱鍵時(shí),在事件處理中區(qū)分用戶(hù)按下的熱鍵
   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);
     
     //第一步:注冊(cè)熱鍵,第一個(gè)參數(shù)表示該熱鍵的標(biāo)識(shí),第二個(gè)參數(shù)表示組合鍵,如果沒(méi)有則為0,第三個(gè)參數(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)聽(tīng)器
     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();
   }
 }

其實(shí),jintellitype的使用非常簡(jiǎn)單,就3個(gè)步驟:

第一步:添加jar包和dll文件;

第二步:注冊(cè)熱鍵;

第三步:添加熱鍵監(jiān)聽(tīng)器,實(shí)現(xiàn)接口的方法;

相關(guān)文章

  • SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)hsqldb的實(shí)踐

    SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)hsqldb的實(shí)踐

    hsqldb只需要添加對(duì)應(yīng)的依賴(lài),然后在配置文件進(jìn)行配置。不需要安裝一個(gè)數(shù)據(jù)庫(kù),本文就來(lái)介紹一下具體使用,感興趣的可以了解一下
    2021-09-09
  • httpclient connect連接請(qǐng)求方法源碼解讀

    httpclient connect連接請(qǐng)求方法源碼解讀

    這篇文章主要為大家介紹了httpclient connect連接請(qǐng)求方法解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Java reservedcodecachesize虛擬機(jī)參數(shù)案例詳解

    Java reservedcodecachesize虛擬機(jī)參數(shù)案例詳解

    這篇文章主要介紹了Java reservedcodecachesize虛擬機(jī)參數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Quarkus中的依賴(lài)注入DI和面向切面aop編程

    Quarkus中的依賴(lài)注入DI和面向切面aop編程

    這篇文章主要為大家介紹了Quarkus中的依賴(lài)注入DI和面向切面aop的編程規(guī)范思想,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • java實(shí)現(xiàn)猜數(shù)字小游戲(Swing版)

    java實(shí)現(xiàn)猜數(shù)字小游戲(Swing版)

    這篇文章主要介紹了java實(shí)現(xiàn)猜數(shù)字小游戲,Swing編程版的猜數(shù)字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 一文總結(jié)Java獲取文件后綴名的所有方法

    一文總結(jié)Java獲取文件后綴名的所有方法

    Java是一種應(yīng)用廣泛的編程語(yǔ)言,可以通過(guò)多種方式來(lái)實(shí)現(xiàn)對(duì)文件的操作,如文件名后綴、文件擴(kuò)展名等,下面這篇文章主要給大家介紹了關(guān)于Java獲取文件后綴名的所有方法,需要的朋友可以參考下
    2023-05-05
  • Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1

    Java實(shí)現(xiàn)FTP批量大文件上傳下載篇1

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP批量大文件上傳下載的基礎(chǔ)篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 深入理解hibernate的三種狀態(tài)

    深入理解hibernate的三種狀態(tài)

    本篇文章主要介紹了深入理解hibernate的三種狀態(tài) ,主要包括了transient(瞬時(shí)狀態(tài)),persistent(持久化狀態(tài))以及detached(離線狀態(tài)),有興趣的同學(xué)可以了解一下
    2017-05-05
  • Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán))

    Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán))

    這篇文章主要介紹了Java簡(jiǎn)單計(jì)時(shí)的實(shí)現(xiàn)案例(可以用來(lái)限時(shí)循環(huán)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 詳解Java面向?qū)ο笾械睦^承

    詳解Java面向?qū)ο笾械睦^承

    這篇文章主要介紹了詳解Java面向?qū)ο笾械睦^承,繼承提高代碼的復(fù)用性:通過(guò)繼承,子類(lèi)可以直接使用父類(lèi)的屬性和方法,不需要重復(fù)定義,需要的朋友可以參考下
    2023-05-05

最新評(píng)論