JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
![JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?](/upload/InfoBanner/zyjiaocheng/746/6a7a374e9af54985af1d89867106fbb6.jpg)
我试图用Java(fx)捕获鼠标/键事件,即使应用程序窗口没有集中……
我正在创建类似于screenrecorder的东西,我想通过按“F9”之类的键来停止录制,所以我需要检测事件.这可能吗?
有没有像我可以使用的系统监听器?
?亨利
解决方法:
这是可能的,但如果注册的组件不在焦点,则标准Java无法访问键击或鼠标事件.
为了实现这一点,您需要通过Java Native Interface(JNI)使用本机代码.这使Java代码能够调用本机应用程序(特定于硬件和操作系统平台的程序)和用其他语言(如C和C)编写的库.
幸运的是,有一个第三方库JNativeHook专为您的需求而设计.你可以在这里找到它:https://github.com/kwhat/jnativehook
如果您使用Maven进行依赖关系管理,则可以轻松安装.这是一个工作示例:
App.java
package com.sotest.globalkeylistener;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
public class App
{
public static void main(String[] args) {
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new GlobalKeyListener());
}
}
GlobalKeyListener.java
package com.sotest.globalkeylistener;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
public class GlobalKeyListener implements NativeKeyListener {
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
if (e.getKeyCode() == NativeKeyEvent.VC_ESCAPE) {
try {
GlobalScreen.unregisterNativeHook();
} catch (NativeHookException e1) {
e1.printStackTrace();
}
}
}
public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
public void nativeKeyTyped(NativeKeyEvent e) {
System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
}
}
关键输出:
鼠标输出
这样,即使Java应用程序已最小化,您也可以检测到该事件.
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?全部内容,希望文章能够帮你解决JavaFX:如何在屏幕上的任何位置检测鼠标/键事件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。