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

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

  jintellitype官网貌似目前访问不到,这里提供下载:http://www.jb51.net/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文件;

第二步:注册热键;

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

(0)

相关推荐

  • java中的快捷键小结

    添加必要的注释,对一个有责任心.有道德模范的前端必须具备的好习惯, 可以大大提高代码的可维护性.可读性. java代码注释快捷键:ctrl+shift+/ 首先熟悉一下html.css.js的注释的写法: 1.HTML注释语法: <!--注释的内容-->2.css注释语法 /* 注释内容 *//* ----------文字样式开始---------- */3.javaScript注释 //注释内容/*注释内容*/接下来是对注释在这几种代码中使用的位置,如何写注释进行总结一下.(根据个人的习惯可

  • java 常用快捷键汇总(超经典)

    快捷键很多,一个一个说肯定说不完了!在myeclipse中也可以自己设置.下面给你贴一个,很全! Eclipse 常用快捷键Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键.   1. [ALT+/]   此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类.方法和属性的名字时,多体验一下[ALT+/]快捷键带来的好处吧.   2. [Ctrl+O]   显示类中方法和属

  • java,Android:在eclipse中的快捷键(经典收藏)

    1.选中你要加注释的区域,用ctrl+shift+C 会加上//注释 2.先把你要注释的器材选中,用shit+ctrl+/ 会加上/* */注释 3.要批改在eclispe中的号令的快捷键体式格式我们只需进入windows -> preference -> General -> key设置就行了(转) 补充:选中要加注释的区域,ctrl+/ 会加//注释 2010/09/13 选中后,ctrl+shift+\,去掉选中项目组的注释 附myeclipse中的所有快捷键列表: Ctrl+1

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

    Java原生API并不支持为应用程序设置全局热键.要实现全局热键,需要用JNI方式实现,这就涉及到编写C/C++代码,这对于大多数不熟悉C/C++的javaer来说,有点困难.不过幸好,国外有人已经实现了,发布成第三方java包,借此,我们可以很方便的设置全局热键而不用编写任何C/C++代码. jintellitype官网貌似目前访问不到,这里提供下载:http://www.jb51.net/softs/217788.html. jintellitype由两部分组成,一部分是java写的jint

  • Java时间处理第三方包Joda Time使用详解

    目录 引言 Joda-Time体验 依赖 创建日期 日期格式化 日期计算 兼容JDK日期 引言 Joda-Time provides a quality replacement for the Java date and time classes.Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.t

  • C#全局热键设置与窗体热键设置实例

    本文实例讲述了C#全局热键设置与窗体热键设置,分享给大家供大家参考.具体实现方法如下: 1.窗体热键 首先要设置主窗体KeyPreview为true,可直接在属性中进行设置, 或者在窗体加载中设置: this.KeyPreview = true; 然后添加窗体KeyDown事件,如下: 复制代码 代码如下: private void FrmMain_KeyDown(object sender, KeyEventArgs e) {     if (e.Alt && e.Shift &

  • IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

    引入第三方jar包或者查看Java源码的时候,经常遇到问题如下: decompiled.class file bytecode version:52.0(java 8) ,open source file. 翻译一下上面的意思:(反编译 .class文件中的字节码 到Java 8 版本) 打开源文件 其实这个时候,你就得注意一下,你看到文件是 .class文件,还是 .java文件. 然后我就详细的总结了一下,二者的差别: 1.先是理论知识: .java为Java的源文件后缀,编写的代码需要写在

  • Laravel第三方包报class not found的解决方法

    出现的问题 公司开发使用PHP,技术框架使用Laravel.最近线上出现一个问题,就是上线之后,每次都会出错.查看出错原因,是composer安装的第三方出现class not found.因为这个问题,在线下使用Lumen框架的时候,遇到过,查找问题原因是因为依赖的composer包中composer.json中的"autoload":{"psr-4":{}}书写格式问题.解决方法使用命令:composer dump-autoload -o; 虽然知道问题的所在,

  • 浅谈Java设置PPT幻灯片背景——纯色、渐变、图片背景

    PPT幻灯片生成时,系统默认是无色背景填充,幻灯片设计需要手动设置背景效果,可设置颜色填充或者图片背景填充.本文将对此介绍具体实现方法. Jar文件导入方法(参考): 步骤1:在Java程序中可新建一个文件夹命名为Lib,并将下载包中的jar文件复制到新建的文件夹下. 步骤2:复制文件后,添加到引用类库:选中这个jar文件,点击鼠标右键,选择"Build Path" – "Add to Build Path".完成引用. Java示例1:设置背景颜色 1.纯色背景

  • python3注册全局热键的实现

    之前用python3做游戏自动化脚本,用过很多东西,然后最终有一套完整的方案.在这里随便阐述一下核心思路: 游戏辅助的窗体设计方面: 不需要pyqt这种大型软件,写小工具用自带的tkinter就行了.当然,并不是自己纯手敲代码,是通过拖拽来实现的.怎么,你还不知道tkinter可以界面拖拽生成代码就行VB一样? 呵呵,PAGE了解一下. 游戏辅助的应用发布方面: 自然是用pyinstaller打包成32位版的exe发布了,带上程序图标,版本信息,都不是事儿  游戏核心模拟方面: 当然不是通过手敲

  • 如何在pycharm中安装第三方包

    有的时候我们在使用pycharm编辑python,需要导入各种各样的包,这些包是不能直接使用的,需要先进行安装.否则就会出现模块导入错误.下面介绍如何在pycharm中安装第三方包. 第一步 首先打开pycharm,在菜单栏找到File,然后点击找到settings,见图: 第二步 找到Project Interpreter,点击右侧的"+"号,添加: 第三步 在输入栏中直接输入自己想要的包,比如"numpy",就会自动出现.找到后点击设置包: 这样就设置成功啦~

  • Golang使用第三方包viper读取yaml配置信息操作

    Golang有很多第三方包,其中的 viper 支持读取多种配置文件信息.本文只是做一个小小demo,用来学习入门用的. 1.安装 go get github.com/spf13/viper 2.编写一个yaml的配置文件,config.yaml database: host: 127.0.0.1 user: root dbname: test pwd: 123456 3.编写学习脚本main.go,读取config.yaml配置信息 package main import ( "fmt&quo

  • Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)

    概述 在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条件格式时,因不同设置需要,本文分别从以下示例要点来介绍: 示例1: 1. 应用条件格式用于高亮重复.唯一数值 2. 应用条件格式用于高亮峰值(最高值.最低值) 3. 应用条件格式用于高亮低于或高于平均值的数值 示例2: 1. 应用单元格值类型的条件格式 2. 应用公式类型的条件格式 3. 应用数据条

随机推荐