如何在 Java 中为其他程序制作虚拟键盘?
How to make a Virtual Keyboard in Java for other programs?
我想在 Java 中为触摸屏超极本制作虚拟键盘之类的东西。例如,我想使用虚拟键盘输入 Microsoft Word。
我目前所做的就是用JButton
代表按键,用Robot
class模拟电脑输入。
我遇到的问题是当我按下 JButton
时,它聚焦 JButton
,因此 Robot
class 将输入定向到 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 Window 或文本框,而不是另一个程序。
所以我的问题是 - 如何制作一个可以输入其他程序的虚拟键盘?最好使用 JButtons
,但我愿意接受任何建议吗?
设置 JFrame
属性 的 setFocusableWindowState(false);
。
我想在 Java 中为触摸屏超极本制作虚拟键盘之类的东西。例如,我想使用虚拟键盘输入 Microsoft Word。
我目前所做的就是用JButton
代表按键,用Robot
class模拟电脑输入。
我遇到的问题是当我按下 JButton
时,它聚焦 JButton
,因此 Robot
class 将输入定向到 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 Window 或文本框,而不是另一个程序。
所以我的问题是 - 如何制作一个可以输入其他程序的虚拟键盘?最好使用 JButtons
,但我愿意接受任何建议吗?
设置 JFrame
属性 的 setFocusableWindowState(false);
。