Mac OSX Java:未激活时接收鼠标事件

时间:2010-05-31 11:35:31

标签: java macos

我正在编写一个Java Swing应用程序,当应用程序未被激活时需要有一个窗口接收鼠标移动事件 - 将它想象成一个全局的always-on-top工具栏,当鼠标经过它时会动画。

从我迄今为止的研究中,我看到Mac Java JRE仅在应用程序具有焦点时才传递事件。

它似乎不是操作系统的限制,所以我希望有一个系统属性,一个应用程序包属性或一个启用非激活事件处理的系统调用。如果做不到这一点,那就是一些全局捕获鼠标移动事件并将它们传递给Java应用程序的方法。

感谢您的任何建议......

编辑:还有一个问题:一旦捕获了鼠标移动事件,你如何将它们送入Swing,以便它们与原生OS鼠标事件一样被处理 - 通过在鼠标下找到组件并发送一个MouseEvent到它......

1 个答案:

答案 0 :(得分:2)

纯Java无法实现这一点 您将需要JNI并使用C ++或其他语言编写全局keylistener(或keyboard hook)。

以下是有关Global KeyListener的一些主题:

关于最后一个主题:this是OSX的给定解决方案。