Java 为什么“robot.keyrease(KeyEvent.VK_CONTROL)”是必需的?

Java 为什么“robot.keyrease(KeyEvent.VK_CONTROL)”是必需的?,java,junit4,awtrobot,Java,Junit4,Awtrobot,使用Robot类时,以下内容的含义是什么: robot.keyRelease(KeyEvent.VK_CONTROL); 下面的代码不足以发送事件吗 Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_CONTROL); keyPress将发送一个按键被按下的事件钥匙释放将发送钥匙已释放的事件。如果要模拟键入,可能需要执行以下操作: public class SuperRobot extends Robot { public v

使用Robot类时,以下内容的含义是什么:

robot.keyRelease(KeyEvent.VK_CONTROL);
下面的代码不足以发送事件吗

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);

keyPress
将发送一个按键被按下的事件<代码>钥匙释放将发送钥匙已释放的事件。如果要模拟键入,可能需要执行以下操作:

public class SuperRobot extends Robot {
    public void typeKey(int keyCode) {
        keyPress(keyCode);
        delay(20);
        keyRelease(keyCode);
    }
}

public static void main(String[] args) {
    try {
        SuperRobot r = new SuperRobot();
        // Now, let's press Ctrl+A
        r.keyPress(KeyEvent.VK_CONTROL);
        r.typeKey(KeyEvent.VK_A);
        r.keyRelease(KeyEvent.VK_CONTROL);
    } catch (Exception ex) { // Either AWTException or SecurityException
        System.out.println("Oh no!");
    }
}
请注意,要键入带有掩码的内容,如Ctrl+a,我们首先按下Ctrl,然后模拟按下并释放a,然后释放Ctrl。一般来说,机器人应该或多或少准确地模拟用户的行为

robot.keyRelease(KeyEvent.VK_CONTROL); 
用于释放按键上的按键效果,如果您使用 机器人按键(KeyEvent.VK_控制);
然后您也应该释放它,否则一旦java应用程序运行,您的键盘将继续运行,实际上按下了CTRL键。

因此,如果我想从帧发送事件,我只能做:Robot Robot=new Robot();机器人按键(KeyEvent.VK_控制);robot.keyPress(KeyEvent.VK_P)?我是否使用了释放方法?或者按一下就足够了?它就像一个键盘。。。按下可向下移动键,释放可向上移动键。所以这取决于你想测试什么,但是想象一下在现实生活中运行测试。如果您想按住该键,只需按一下即可。如果要按下并释放(又称键入)键,则需要同时使用这两个键。老实说,去玩玩吧。。。这就像4行代码,比我的解释更有启发性。