第三方包jintellitype实现Java设置全局热键_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文件;

第二步:注册热键;

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, jintellitype
全局热键
全局热键、c 全局热键、易语言注册全局热键、易语言全局热键、qt全局热键,以便于您获取更多的相关知识。

时间: 2024-10-21 11:27:22

第三方包jintellitype实现Java设置全局热键_java的相关文章

java JIntellitype实现全局热键设置 监听键盘 系统剪贴板

问题描述 java JIntellitype实现全局热键设置 监听键盘 系统剪贴板 我用JIntellitype实现全局热键设置,监听键盘事件ctrl+c和ctrl+v并且与系统剪贴板结合,当用户按下ctrl+v时打印出用户复制的存于剪贴板中的内容,现在情况是这样的当用户按快捷键ctrl+C复制时复制的内容并没有存入系统剪贴板中,用户鼠标右击复制的内容才能存入剪贴板中是为什么呢 当我撤销对ctrl+c键的监听时就可以.怎样能让我既监听ctrl+c又当按快捷键ctrl+C复制时复制的内容存入系统剪

java spring mvc怎么设置全局增删改方法为post请求

问题描述 java spring mvc怎么设置全局增删改方法为post请求 我不想在每个增删改方法注解的形式表明此方法为post请求,想在配置文件中设置全局的以add*updata*等开头的方法为post请求 解决方案 @Controller@RequestMapping(value=""t""method=RequestMethod.POST)public class TestController {...} 解决方案二: @Controller@Request

java采用第三方包的sftp 关闭连接之后进程为何不结束

问题描述 采用的common.net的第三方包,关闭sftp连接之后发现进程还在,而且只要我程序不结束,这个进程就一直存在.奇怪的是我在关闭连接之后还打印出来了连接isConnect方法,打印竟然是false.哪位高手帮帮忙啊 解决方案 解决方案二:不会搞

dll文件-no JIntellitype in java.library.path

问题描述 no JIntellitype in java.library.path 在我的java工程中,用到了第三方jar包和dll文件,dll文件放在了工程根目录,在eclipse中运行是出现问题Caused by: java.lang.UnsatisfiedLinkError: no JIntellitype in java.library.path at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runt

Android Studio使用教程(五):Gradle命令详解和导入第三方包_Android

Android Studio + Gradle的组合用起来非常方便,很多第三方开源项目也早都迁移到了Studio,为此今天就来介绍下查看.编译并导入第三方开源项目的方法. Sublime + Terminal编译并查看源码 首先来给大家介绍一种简便并且个人最喜欢的一种办法.很多时候我们在GitHub上看到一个不错的开源项目,一般有两种需求,阅读源码和查看运行效果,如果是单纯的查看源码我更喜欢用一些轻量级编辑器,如vim,sublime等,vim不是很熟练,所以个人一种都习惯用sublime来查看

Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理)

Maven自定义上传第三方包到3rd party(第三方无依赖jar和本地扩展类加入maven统一管理) 注:如果图片太小,则可以下载查看,CSDN,不提供点击放大! 1:用浏览器登陆nexus服务器(此处为本地): http://localhost:8081/nexus/ admin admin123 2:第三方依赖加入: Log in到nexus中,如下图: 3:手动设置填写:GroupId,Artifact,Version: 4:点击:Select Artifact(s) for Uplo

[Qt Topic] – 全局热键、托盘功能和随机启动

全局热键.托盘功能和随机启动 作者:Jason Lee 日期:2010-04-24 平台:Qt SDKv2010.02.1 + Windows Xp 声明:文章作者仅在Intel软件网络和CSDN博客发表本文,如有转载,请注明出处   [1]全局热键 Qt事件模型提供了这么一个功能:在一个QObject实例遇到属于它的事件之前,可以通过设置另外一个QObject实例来监视(过滤)这些事件.我们称监视事件的对象为事件过滤器,即eventFilter. 通过QObject的eventFilter和i

前端-java web 全局异常处理 如何配置

问题描述 java web 全局异常处理 如何配置 怎样配置java web 前端在访问该项目中根本不存在的方法的时候 跳转异常页面啊? 解决方案 java web异常处理java web 中几种异常处理Java web的几种异常处理 解决方案二: 看你使用什么技术了.要是ssh框架,直接使用struts2或者spring mvc的拦截器就行,如果是servlet,那就自己写一个拦截器. 解决方案三: 前端访问项目中不存在的方法是什么意思? 页面调用脚本方法不存在的时候浏览器是会执行异常的. 解

fedora系统 屏蔽全局热键

问题描述 fedora系统 屏蔽全局热键 fedora操作系统, 可以通过 修改 哪些 配置文件 将 alt+tab 等全局热键给屏蔽掉? 解决方案 怎样屏蔽系统热键屏蔽系统热键