使用Java,如何在不使用GUI组件的情况下检测按键?

使用Java,如何在不使用GUI组件的情况下检测按键?,java,event-handling,keyboard,mouseevent,keylistener,Java,Event Handling,Keyboard,Mouseevent,Keylistener,使用Java,是否可以在不使用GUI元素的情况下检测用户操作,例如按键、鼠标按键和/或鼠标屏幕位置 如果是,我如何实施 否则,还有什么选择 我在这件事上找到的唯一StackOverflow来源是,这是没有答案的 我在StackOverflow之外找到的关于这个问题的唯一来源指向一个“不可见的GUI”解决方案,希望是我真正想要避免的东西。它可以使用JNI和/或JNA实现,但这不能真正称为“java实现”,因为您必须编写特定于平台的本机代码 我尝试过的另一种解决方案是使用全屏透明窗口,它监听鼠标和

使用Java,是否可以在不使用GUI元素的情况下检测用户操作,例如按键、鼠标按键和/或鼠标屏幕位置

如果是,我如何实施

否则,还有什么选择


我在这件事上找到的唯一StackOverflow来源是,这是没有答案的


我在StackOverflow之外找到的关于这个问题的唯一来源指向一个“不可见的GUI”解决方案,希望是我真正想要避免的东西。

它可以使用JNI和/或JNA实现,但这不能真正称为“java实现”,因为您必须编写特定于平台的本机代码


我尝试过的另一种解决方案是使用全屏透明窗口,它监听鼠标和键盘的所有事件,并使用class
Robot
将它们“转发”到实际应用程序。我试过这种方法。它可以很好地工作,但有一个限制:支持应用程序的“鼠标悬停”事件存在一个问题:鼠标没有移动到真实的应用程序上。它正在透明java窗口上移动。

使用java.awt.event.KeyListener类。您必须编写三种方法,在这些方法中,您可以编写要检测到的键,以及按下该键时希望发生的任何事情。

另请参见:我认为可以手动运行。查看JDK源代码,了解如何实现
JOptionPane
,我似乎还记得,它们的模式对话框是通过创建一个新的
EventQueue
来实现的,它忽略了不针对对话框的事件。(也就是说,我不知道这是否会自动挂接到本机窗口系统并开始抓取事件。)@pb2q很好,这个链接提供了很多见解。不幸的是,讨论线程的链接似乎已经失效。我想看看这个。我还没有时间全部阅读,但它已经提供了很多新知识。非常感谢。+1