我正在尝试触发 CTRL + O 按键,但我在Invalid key code
方法中得到keyPress
。我找不到原因,难道我们不能使用keyPressed方法触发 CTRL 按键吗?
这是我的代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class MainTest extends JFrame{
public static void main(String[] args) throws AWTException {
Robot r= new Robot();
r.keyPress(KeyEvent.CTRL_MASK);
r.keyPress(KeyEvent.VK_O);
MainTest mainF =new MainTest();
mainF.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
System.out.println("woot!");
}
}
});
}
}
答案 0 :(得分:3)
对于第一个KeyEvent.VK_CONTROL
,只需使用KeyEvent.CTRL_MASK
代替keyPress
,这实际上会点击 Control 键。
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);
答案 1 :(得分:1)
您可以使用InputEvent isControlDown() method。
<强> isControlDown 强>
public boolean isControlDown()
返回Control修饰符是否在此事件中失效。
您的代码如下所示:
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if ((e.isControlDown()) {
System.out.println("woot!");
}
}
您可以查看this tutorial了解详情。