分隔 F1 CTRL + F1 各自 SHIFT - + F1 即JButton?

public void keyPressed(KeyEvent event) {
    int key = event.getKeyCode();

    logger.debug("KeyBoard pressed char(" + event.getKeyChar() + ") code (" + key + ")");
}

..总是给我112 F1 ,113为 F2 ,依此类推。我知道我可以通过自己处理keyPressed()来处理它,对于我自己的 CTRL / SHIFT / ALT / etc的keyReleased ,但我希望有更好的方法。

非常感谢!!!

有帮助吗?

解决方案

解决方案位于KeyEvent(InputEvent)的父级

  1. 使用isAltDown,isControlDown,isShiftDown方法或
  2. 使用getModifiers方法

其他提示

由于KeyEvent扩展了InputEvent, isControlDown isShiftDown isAltDown

在处理Swing小部件时,

KeyEvent 可能有点低级。而是通过 InputMap ActionMap

显然,只要按键关闭,就会调用按键事件。 它不是一个多键按键事件,并且没有这样的事情,所以没有键码可以解决多个键的问题。

您只需要使用变量来跟踪被按下的crtl键。这意味着您还必须使用按键事件来跟踪控制键的释放时间。

在pusedo代码中:

// CRTLKeyCode is whatever the code is for the ctrl key
private boolean ctrlPressed = false;

 onKeyDown(KeyEvent event){
     int key = event.getKeyCode();
     if(key == CRTLKeyCode)
        ctrlPressed = true;
     else if(ctrlPressed && key == 112)
        //Perform your action
 }
 onKeyUp(KeyEvent event){
     int key = event.getKeyCode();
     if(key == CRTLKeyCode)
        ctrlPressed = false;
 }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top