如何用Java为其他程序制作虚拟键盘?

如何用Java为其他程序制作虚拟键盘?,java,keyboard,jbutton,Java,Keyboard,Jbutton,我想用Java为触摸屏超级本制作一个虚拟键盘。例如,我想用虚拟键盘键入Microsoft Word 到目前为止,我所做的是使用JButton来表示键,并使用Robot类来模拟计算机输入 我遇到的问题是,当我按下JButton时,它会聚焦JButton,因此Robot类将输入定向到JButton而不是我想要输入的程序,如Microsoft Word 对于按钮A,我的代码如下所示 int KeyValue = KeyEvent.VK_A; Robot robot ... JButtton.addM

我想用Java为触摸屏超级本制作一个虚拟键盘。例如,我想用虚拟键盘键入Microsoft Word

到目前为止,我所做的是使用
JButton
来表示键,并使用
Robot
类来模拟计算机输入

我遇到的问题是,当我按下
JButton
时,它会聚焦
JButton
,因此
Robot
类将输入定向到
JButton
而不是我想要输入的程序,如Microsoft Word

对于按钮A,我的代码如下所示

int KeyValue = KeyEvent.VK_A;
Robot robot ...

JButtton.addMouseListener(new MouseListener(){
    ...
    public void mousePressed(MouseEvent e){
        robot.keyPress(KeyValue);
    }
    public void mouseReleased(MouseEvent e){
        robot.keyRelease(KeyValue);
    }
    ...
}
...
我已经确认按钮被按下了。我在
JButton
中添加了一个
KeyListener
,每次单击按钮时都会按下一个“a”,但它指向
JButton
而不是另一个程序

我尝试过使用
JButton.setFocusable(false)
,但没有成功

我搜索过其他类似的问题,但它们都是以本机方式输入到另一个Java窗口或文本框中,而不是另一个程序


所以我的问题是-我怎样才能制作一个虚拟键盘来输入其他程序?最好使用
JButtons
,但我愿意接受任何建议?

设置
setFocusableWindowState的
JFrame
属性(false)

您是否尝试过设置
setFocusableWindowsState的JFrame属性(false)?不确定按钮点击是否仍会被注册。我以前只使用了
setFocusable(false)
,但它不起作用,所以我只是尝试了你的方法,效果非常好。谢谢~如果您想将解决方案作为答案发布@威尼斯。我会发帖的,谢谢!