这不是一个微不足道的问题,Java并没有给你一种优雅地做到这一点的方法。您可以使用像 banjollity 这样的解决方案,但即使这样,如果您错误的鼠标点击打开了当前在任务栏中打开的另一个全尺寸窗口,即使这样也不会一直有效。
事实是,默认情况下,Java使开发人员对操作系统几乎没有控制权。这是由于2个主要原因:安全性(如java文档所引用的那样)以及不同的操作系统处理事件完全不同的事实,并且制作一个统一的模型来表示所有这些可能没有多大意义。
因此,为了回答您的问题,我想您想要的是程序的某种行为,它在全球范围内侦听按键,而不仅仅是在您的应用程序中。像这样的事情将要求您访问您选择的操作系统提供的功能,并且要在Java中访问它,您将需要通过Java本机接口(JNI)层来执行此操作。
所以你想做的是:
在C中实现一个程序,该程序将侦听操作系统上的全局按键,如果该操作系统是Windows,那么在Windows钩子上查找文档,Microsoft和MSDN在Web和其他地方都很好地记录了这些文档。如果您的操作系统是 Linux 或 Mac OS X,那么您需要使用 X11 开发库侦听全局按键。这可以在ubunutu linux发行版上根据我在 http://ubuntuforums.org/showthread.php?t=864566
通过 JNI 将 C 代码连接到 Java 代码。此步骤实际上是更简单的步骤。按照我在 http://ubuntuforums.org/showthread.php?t=864566 的教程中使用的过程在Windows和linux下进行操作,因为将C代码连接到Java代码的过程在两个操作系统上都是相同的。
要记住的重要一点是,如果您首先编写代码并调试C / C++代码并确保它正常工作,那么让JNI代码工作起来要容易得多。然后,将其与Java集成就很容易了。