当前位置: 首页 > 面试题库 >

Java中的事件监听器,而应用程序没有焦点?(全局按键检测)

胡禄
2023-03-14
问题内容

我已经搜索了一段时间,每个人似乎都认为仅使用Java是不可能的,所以我给您一个机会;)

有什么方法可以让我的Java应用程序侦听事件(尤其是关键事件),而另一个不相关的应用程序具有窗口焦点?在我的情况下,即使我的Java应用程序没有焦点,我也希望检测用户何时按下了键盘上的“暂停”键。

我听说有人提到,唯一的方法是编写一些C代码并使用JNI。只是好奇是否有人知道避免这种情况的方法?或者,如果不是,那么至少有一个关于c /
JNI的非常不错的教程?

谢谢


问题答案:

我的理解是无法做到这一点。从根本上讲,JVM仅为其接收的O / S事件生成事件,并且仅在具有焦点时才接收O / S输入事件。

我确信您 可以 使用JNI来触发O / S为所有输入生成事件,但这将与O / S密切相关。



 类似资料:
  • 23.5 应用程序的事件和监听器 除了一般的Spring Framework的事件(如ContextRefreshedEvent)以外,SpringApplication还会发送一些额外的应用程序事件。 一些事件实际上在创建ApplicationContext之前就被触发,所以您无法将监听这些事件的监听器注册为@Bean,不过可以通过SpringApplication.addListeners(…

  • 我在下面写这段代码,这是一个简单的用户注册选项,当我按下创建我的帐户按钮时,我得到:任何人都可以找出原因?我自己想不出来。提前谢谢大家 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12-28 18:38:57.792 3358-3358/gr.aegean.icsd15109.myfitupE/

  • 问题内容: 我试图在我的Mac OS X应用程序中使用处理程序以Swift编写一个全局(系统级)热键组合,但我只是找不到适合的文档。我已经读到我必须弄乱一些旧版Carbon API,有没有更好的方法?您能告诉我一些概念证明Swift代码吗?提前致谢! 问题答案: 从Swift 2.0开始,您现在可以将函数指针传递给C API。

  • 立即想到的解决方案是创建一个跟踪所有热键的arraylist,并让keylistener每次迭代它,以及另一个带有关联按钮的arraylist的arraylist。 有没有更优雅、更直接的方法?

  • 问题内容: 现在,我正在开发类似于bash的命令行应用程序。为了实现自动完成功能,我必须知道用户已经按下Tab键。但是我不知道如何在控制台应用程序中监听键盘事件。 有任何想法吗?提前致谢。 问题答案: 这比看起来要复杂一些。 也许您应该看一下为您处理所有事情的jline项目。

  • 问题内容: 我正在尝试使用Carbon的功能为按下命令键时创建一个热键。我这样使用它: 但是,仅使用命令键时不会调用。如果我替换为其他任何非修饰键代码,则将调用处理程序。 有没有人有任何建议可以让应用程序在按下命令键时全局识别?谢谢。 问题答案: 您可以将与事件匹配的“全局事件监控器”添加到视图控制器,以便您可以检查它的modifierFlags与deviceIndependentFlagsMas