KeyListener 正在触发错误的事件
KeyListener is firering wrong Events
我编写了一个简单的 KeyListener 来识别 Arrow_Left/Right 事件。
出于某种原因,我的左键正在触发 1 VK_LEFT 按下和 1 VK_RIGHT 事件(右箭头正常工作)
这一定是硬件/键盘问题(箭头键工作正常)或者有人知道如何解决这个问题吗?
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT: {
//left
System.out.println("leftPressed");
keyLeftPressed = true;
}
case KeyEvent.VK_RIGHT: {
//right
System.out.println("rightPressed");
keyRightPressed = true;
}
}
}
左键的控制台输出是:
左压
右压
右键单击:
右压
您忘记了 case 语句中的 break 语句。如果没有break,则执行下一个case。
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT: {
//left
System.out.println("leftPressed");
keyLeftPressed = true;
break;
}
case KeyEvent.VK_RIGHT: {
//right
System.out.println("rightPressed");
keyRightPressed = true;
break;
}
}
}
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT:
//left
System.out.println("leftPressed");
keyLeftPressed = true;
break;
case KeyEvent.VK_RIGHT:
//right
System.out.println("rightPressed");
keyRightPressed = true;
break;
}
}
你错误地使用了switch-case。括号不是必需的,但您必须添加 break 语句。
我编写了一个简单的 KeyListener 来识别 Arrow_Left/Right 事件。 出于某种原因,我的左键正在触发 1 VK_LEFT 按下和 1 VK_RIGHT 事件(右箭头正常工作)
这一定是硬件/键盘问题(箭头键工作正常)或者有人知道如何解决这个问题吗?
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT: {
//left
System.out.println("leftPressed");
keyLeftPressed = true;
}
case KeyEvent.VK_RIGHT: {
//right
System.out.println("rightPressed");
keyRightPressed = true;
}
}
}
左键的控制台输出是: 左压 右压
右键单击: 右压
您忘记了 case 语句中的 break 语句。如果没有break,则执行下一个case。
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT: {
//left
System.out.println("leftPressed");
keyLeftPressed = true;
break;
}
case KeyEvent.VK_RIGHT: {
//right
System.out.println("rightPressed");
keyRightPressed = true;
break;
}
}
}
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_LEFT:
//left
System.out.println("leftPressed");
keyLeftPressed = true;
break;
case KeyEvent.VK_RIGHT:
//right
System.out.println("rightPressed");
keyRightPressed = true;
break;
}
}
你错误地使用了switch-case。括号不是必需的,但您必须添加 break 语句。