问题描述
我想用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
但我愿意接受任何建议吗?
1楼
设置setFocusableWindowState(false);
的JFrame
属性setFocusableWindowState(false);
。