0

我想模拟一个 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”,但它没有这样做。

谢谢你的帮助!

另外,如果您知道在没有机器人类的情况下模拟关键事件的方法,请在下面发布:)。

资料来源:如何在java中模拟键盘按下?

4

2 回答 2

2

问题不仅仅在于您如何使用Robot.

KeyListener只有当它附加到的组件是可聚焦的并且具有焦点时才会响应。

首先,不要使用KeyListener,而是使用键绑定,这将有助于解决焦点问题。

其次,确保您尝试与实际键盘焦点交互的窗口(并且焦点不在会消耗Enter键的控件上)

于 2013-05-07T22:13:27.960 回答
0

我假设您之前已将 添加KeyListener到您的组件中。如果没有,请使用这个:

yourComponent.addKeyListener(yourKeyListener);

如果您已经这样做了,但仍然无法正常工作,则可能您没有为添加的组件请求焦点KeyListener

尝试在之前添加robot.keyPress

yourComponent.requestFocus();

应该生成事件yourComponent的组件在哪里KeyPressed

于 2013-05-07T22:09:59.517 回答