你能用Java检测Mac Spaces吗?

dre*_*eam 7 java macos spaces virtual-desktop

我有一个主要为Mac构建的java应用程序.我需要能够做以下三件事之一:

  1. 我的应用程序始终遵循当前空间.这意味着,如果我在桌面2上并启动我的应用程序,然后切换到桌面3,我的应用程序将自动显示在桌面3上.这相当于右键单击Dock中的应用程序图标,选择"选项",然后选择"所有桌面".如果我能以某种方式使这成为我的应用程序的默认行为,而不需要用户操作,那就太棒了!

  2. 捕获特定空间的屏幕.我目前使用Robot类进行屏幕截图.如果有办法我可以指定要捕获的空间,而不仅仅是当前空间,那就太棒了!

  3. 能够至少检测是否离开当前空间.

我开始倾向于这些都不可能.但是,如果你能提供任何帮助或可能的解决方法,那将是非常棒的!

我也玩过GraphicsEnvironment,GraphicsDevice,GraphicsConfiguration,但没有运气.它不会返回有关Mac的虚拟桌面(空间)的任何信息.

让事情变得困难的是我试图不惜一切代价避免使用特定于平台的代码!我知道我可以用JNI来完成这个,或者java-apple扩展中可能有一些东西.但是目前,我使用单个代码分支并为Mac和Windows构建.我试图避免为两个平台分别构建两个版本和二进制文件.

Gra*_*ray 3

答案是“否”,除非您正在编写本机代码并使用 JNI。Java 的关键设计特征之一是它与操作系统无关。您所要求的内容与Mac OS X非常相关。我在 Apple Java 扩展中看不到任何有帮助的内容。

  • Gray 说,你唯一能做的就是拥有一个分支代码路径,在其中检查你是否在 OS X 上运行,如果是,则运行此 JNI 代码,否则执行 Windows JNI 代码(或不执行任何操作)。 (2认同)