0

这个问题可能很奇怪。但我试图让它理解。我正在尝试在 java 中制作屏幕键盘。它应该在光标被激活的地方写入字符。就像,打开一个微软的word文件,用我想在那个word文件中写的键盘。可能是我在 Visual Studio 中编码,我将通过单击键盘的键在 Visual Studio 中编写代码。我怎样才能用我的键盘在其他应用程序中写字。任何人都可以给我任何想法吗?提前致谢。我用 swing 制作了键盘布局(字母和数字字符)。

4

2 回答 2

3

您有一系列复合问题,主要围绕键盘焦点。

主要问题是,一旦您单击窗口中的按钮,该窗口会因为聚焦而成为键盘焦点的活动接收者,这意味着您在任何地方发送击键的任何尝试最终都会被您的按钮消耗刚刚点击。

解决这个问题的最简单方法是使所有按钮都无法聚焦,使用JButton#setFocusable并传递它false

要以编程方式将击键发送到活动窗口,您可以使用Robot该类

例如...

Robot bot = new Robot();
bot.setAutoDelay(100); // I find a small delay between events helps a lot...
bot.keyPress(KeyEvent.VK_A);
bot.keyRelease(KeyEvent.VK_A);

您可能还想看看Window#setAlwaysOnTopWindow#setFocusableWindowState

于 2013-10-21T03:01:39.663 回答
2

您可以使用机器人类

http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

这有两个方法,keyPress 和 keyRelease,您必须调用它们来模拟按键。

这可以称为传入 KeyEvent 常量。

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_A);
robot.keyRelease(KeyEvent.VK_A);
于 2013-10-21T02:58:13.380 回答