我在java中制作某种屏幕键盘。所以我需要JFrame失去焦点(因此,将焦点转移到下一个窗口)来发送击键。有没有办法让JFrame窗口失去焦点?
例如,在Windows上,如果您打开本机屏幕键盘,您可以按下那里的按钮,同时屏幕上的窗口本身不在焦点上,而是一个不同的窗口获取输入。
为清楚起见,我正在尝试复制原生屏幕键盘的功能。所以我正在制作的那个将用于我打开的任何和所有窗口,而不仅仅是Java。我正在使用Robot类来模拟击键。
总而言之,我需要我的JFrame:
setAlwaysOnTop(true);
)答案 0 :(得分:2)
我无法相信我有多愚蠢,答案就在那里。我不知道我是如何错过它的,但setFocusableWindowState(false);
正是我所寻找的。在JFrame上使用该标志,它不会聚焦。
答案 1 :(得分:1)
我猜你的第二个窗口是另一个JFrame,也许?如果是这样,请将辅助窗口放在链接到主要主JFrame的JDialog中(即,将JFrame传递给JDialog的构造函数)。这将为您提供您想要的。
有关更具体的帮助,请考虑创建一个非常简单的小示例程序来演示您的问题。例如,它可以在对话框窗口中只有一个JButton sscce。
修改强>
在阅读了更新后的问题后,我担心您的问题无法通过核心Java解决,并且可能需要一些本机编码,可能通过JNI或JNA。请理解,为了使Java可以在多个平台上使用,它被构建为尽可能与OS无关,因此需要与低级OS调用隔离,这是您所需程序工作所需的调用。