我想模拟按Enter键。我尝试使用机器人类,但它似乎不起作用:
robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
try{Thread.sleep(50);}catch(InterruptedException e){}
robot.keyRelease(KeyEvent.VK_ENTER);
在我的主要代码中,我有
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == KeyEvent.VK_ENTER) {
System.out.println("ENTER KEY PRESSED");
// DO SOMETHING;
}
}
因此,如果keyPress已注册,则控制台应打印出" ENTER KEY PRESSED",但它没有这样做。
感谢您的帮助!
此外,如果您知道在没有机器人课程的情况下模拟关键事件的方法,请在下面发布:)。
答案 0 :(得分:2)
问题不仅在于您使用Robot
的方式。
KeyListener
只会在其附加的组件具有焦点并且具有焦点时才会响应。
首先,请勿使用KeyListener
,而是使用key bindings,这将有助于解决焦点问题。
其次,确保您尝试与实际键盘焦点交互的窗口(并且焦点不在将使用 Enter 键的控件上)
答案 1 :(得分:0)
我假设您之前已将KeyListener
添加到您的组件中。如果没有,请使用:
yourComponent.addKeyListener(yourKeyListener);
如果您已经这样做但仍然无效,可能您没有请求对您添加KeyListener
的组件进行焦点
尝试在robot.keyPress
:
yourComponent.requestFocus();
yourComponent
是应该生成KeyPressed
事件的组件