我正在使用Swing中的键事件为我的应用程序编写一个键绑定系统。我正在使用添加到画布中的KeyListener检测按键。
Canvas canvas = new Canvas()
frame.add(canvas);
canvas.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("KEY CODE: " + e.getKeyCode() + " KEY LOCATION: " + e.getKeyLocation());
}
@Override
public void keyReleased(KeyEvent e) {
}
});
一切都按缩进方式工作,KeyListener的keyP的(KeyEvent e)
方法在键盘上按下的每个键都会被调用。
当我按下前面提到的右ALT键时,问题就出现了。它导致两个连续的KeyEvents被分派。一个用于左CTRL键,一个用于右ALT键。据我所知,CTRL键的如此分派事件与实际按下CTRL键时分派的KeyEvent无法区分。
有没有办法防止在按下正确的ALT键时分派CTRL事件,或者我必须使正确的ALT键不可绑定以避免混淆行为?
基于以下答案:
当我按下键盘上的右alt键时,左侧控件被注册按下?
有些键盘在左边有一个ALT键,在右边有一个ALTGR键,如果你有一个ALTGR键,那么按下该键会触发一个偶数,告诉操作系统Alt Ctrl被按下,这是正常的。
应该提到的是,在某些Windows键盘布局中,您没有这个问题,右键ALT仅充当ALT。