我正在尝试按下 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!");
}
}
});
}
}
最佳答案
只需在第一个keyPress
中使用KeyEvent.VK_CONTROL
而不是KeyEvent.CTRL_MASK
,这实际上会击中Control 键。
r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);
关于java - 尝试按下 CTRL 键时按键代码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117174/