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

我想用
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窗口或文本框,而不是另一个程序.

所以我的问题是 – 我如何制作一个键入其他程序的虚拟键盘?最好使用JButton,但我愿意接受任何建议吗?

最佳答案 设置setFocusableWindowState(false);的JFrame属性.

点赞