java - 在 Java 中创建动态代理抢走了 OS X 的焦点

标签 java macos process focus dynamic-proxy

创建动态代理 (java.lang.reflect.Proxy) 会导致 OS X(至少 10.7 和 10.8)将焦点集中到创建代理的 Java 应用程序。

我创建的代理包装了一个启动外部进程的对象。该外部进程希望获得焦点,但当 Java 进程窃取焦点时,事情就会失败。

似乎 OS X 正在将 Java 进程提升到停靠点,这就是它从其他应用程序中抢走焦点的原因。有谁知道如何防止这种情况吗?

最佳答案

如果您的代码涉及与 AWT 子系统有关的任何内容,您通常会看到 Mac Java 应用程序的停靠图标。这包括看似无害的事情,例如计算字体规范,而不仅仅是显示 JFrame 等明显的情况。

如果您的 Java 代码不需要实际显示任何 GUI 组件,您可以将系统属性 java.awt.headless 设置为字符串 true 以防止其启动启动 native 窗口系统(尽管如果您使用此选项集运行,然后执行需要 native GUI 的操作,您将得到一个异常)。

关于java - 在 Java 中创建动态代理抢走了 OS X 的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13028316/

相关文章:

java - getClassLoader().getResourceAsStream 方法对于扩展名为 ".LIB"的文件返回 null

c++ - 来自命令行的 gnu 编译器

node.js - 无法使用 Windows 读取 $process.env.NODE_ENV

windows - 使用脚本在 cmd 或 shell 中终止进程

java - 如何在迭代时向作为 HashMap 值的 ArrayList 添加内容?

java - 如何在 HTMLEditorKit 的帮助下检索 HTML 的标题

java - 实现应用程序的只读版本

python - 无法更改 python 路径并配置 anaconda

python - 如何解决这个 Django/MySQL 设置灾难?

c - 本应处于 sleep 状态的进程处于事件状态