当前位置:  编程技术>java/j2ee

第三方包jintellitype实现Java设置全局热键

    来源: 互联网  发布时间:2014-11-07

    本文导语:  Java原生API并不支持为应用程序设置全局热键。要实现全局热键,需要用JNI方式实现,这就涉及到编写C/C++代码,这对于大多数不熟悉C/C++的javaer来说,有点困难。不过幸好,国外有人已经实现了,发布成第三方java包,借此,我...

Java原生API并不支持为应用程序设置全局热键。要实现全局热键,需要用JNI方式实现,这就涉及到编写C/C++代码,这对于大多数不熟悉C/C++的javaer来说,有点困难。不过幸好,国外有人已经实现了,发布成第三方java包,借此,我们可以很方便的设置全局热键而不用编写任何C/C++代码。

  jintellitype官网貌似目前访问不到,这里提供下载:http://www./softs/217788.html。

  jintellitype由两部分组成,一部分是java写的jintellityp的jar文件,另一部分是C/C++写的已编译好的dll文件,有两个dll文件,分别是32位和64位系统的。在我使用jintellitype的过程中,把jintellitype的jar文件Build进项目后,不知道dll文件放哪,我试着运行,根据错误提示,原来需要把dll文件放到项目com.melloware.jintellitype包下。建议同时把两个dll文件都加进去,这样,你的程序就可以同时兼容32位和64位系统,而你不需要任何额外的处理。

  贴上我的小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实现全局热键设置
 * @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);
     
     msgBtn = new JButton("弹出框(Alt+S)");
     //设置按钮边距
     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);
     
     //第一步:注册热键,第一个参数表示该热键的标识,第二个参数表示组合键,如果没有则为0,第三个参数为定义的主要热键
     JIntellitype.getInstance().registerHotKey(FUNC_KEY_MARK, JIntellitype.MOD_ALT, (int)'S'); 
     JIntellitype.getInstance().registerHotKey(EXIT_KEY_MARK, JIntellitype.MOD_ALT, (int)'Q'); 
     
     //第二步:添加热键监听器
     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也可以弹出提示框哦!", "弹出框标题", JOptionPane.INFORMATION_MESSAGE);
   }
   
   public static void main(String[] args) {
     new GlobleHotKeyDemo();
   }
 }

其实,jintellitype的使用非常简单,就3个步骤:

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

第二步:注册热键;

第三步:添加热键监听器,实现接口的方法;


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何将第三方包加入 谢谢,急
  • MySQL第三方发行版 OurDelta
  • linux 下如何编译带第三方库函数的程序
  • 请问如何在jbuiler5中加载第三方的bean?
  • java 的第三方包值不值得学呢?
  • 第三方组件带来了IDE的问题。我该如何阻止
  • Android第三方ROM MoKee OpenSource
  • 谁有JBuilder的补丁,或是第三方控件,能完善一下JBuilder的功能的???
  • 第三方库内存泄露,怎么处理?
  • android导入第三方jar包报错 如何正确导入jar包
  • 请问linux下如何添加第三方库文件
  • 求助:如何添加第三方的库文件
  • Android应用内调用第三方应用的方法
  • 如何将第三方程序(命令)输出控制台的结果写到文件里
  • 使用jbuilder的问题,如何用第三方的类,或者怎么用自己写过的类
  • 请问谁做过在linux下用java开发串口通信程序,所用第三方jar包是rxtx
  • 第三方飞信应用程序 LibFetion
  • 要做一个在applet,实现可以托拽的图形(比如长方形和线段等)?那位高手有资料?或者有没有java的第三方类库实现此功能?
  • nginx安装第三方模块的方法
  • 谁知道用JAVA做报表的第三方工具有哪些?最好有中文资料!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3