分隔 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 ,但我希望有更好的方法。
非常感谢!!!
答案 0 :(得分:4)
解决方案位于KeyEvent(InputEvent)的父级
答案 1 :(得分:1)
由于KeyEvent扩展了InputEvent,isControlDown,isShiftDown和isAltDown。
答案 2 :(得分:1)
KeyEvent
可能有点低级别。而是通过InputMap
和ActionMap
。
答案 3 :(得分:0)
显然,只要按键关闭,就会调用按键事件。 它不是一个多键按键事件,并且没有这样的事情,所以没有键码可以解决多个键的问题。
您只需要使用变量来跟踪被按下的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; }