我的工作在发展中的一个屏幕上的键盘java。这个键盘 JComponent 对于每个可能的关键。当老鼠一下检测一下按钮,我要发送具体的键盘编码的应用程序目前的焦点。键盘本身内 JFrame 没有装饰品和设总是在顶部。

我发现机器人类可用于模拟这些键盘上的事件的机队。然而,在这种情况下,选择 JComponent 将意味着关键的新闻接收到 JFrame, ,我不能够接受它的其他应用程序

我怎样才能让我在屏幕上的键盘的"始终没有焦点"?它也许可以使用另一种方法发送关键的新闻?

有帮助吗?

解决方案 3

显然,唯一的方法就是拥有一个JNI层,它将从java转换为native。 Java没有简单的方法来提供这样的功能。

对于想要学习JNI的人来说,对于一个小型的第三方图书馆来说,这可能是一个有趣的概念......

其他提示

当我尝试使用实际的键盘和鼠标命令控制游戏机会时,我找到了 jnativehook (更像“类似人”)。

到目前为止我唯一能找到的解决方案是将每个键都设为JComponent(因此它不能有焦点),并在JFrame上设置以下属性:

    setUndecorated(true);
    setFocusableWindowState(false);
    setFocusable(false);
    enableInputMethods(false);

现在使用机器人类时,我可以通过单击键将事件发送到任何聚焦窗口。唯一的限制是,它似乎只适用于属于同一个虚拟机的Windows,并且它对任何其他系统窗口都不起作用。

你有没有试着打电话给司机setfocus()或setactivewindow()职能移动焦点之前,你用机器人类?

我不知道以独立于操作系统的方式执行此操作的任何方法。我不了解Windows,但可以通过X协议与X服务器通话。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top