考虑一个KeyListener
,将计算的VK_LEFT
每按一次的这个例子 - 即使键被按下和射击多次。
label.addKeyListener(new KeyAdapter() {
boolean pressed = false;
@Override
public void keyPressed (KeyEvent e){
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_LEFT && !pressed){
pressed = true;
keyLabel.setText("left");
System.out.println("Pressed: " + (++count));
}
}
@Override
public void keyReleased (KeyEvent e){
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_LEFT){
pressed = false;
System.out.println("Released.");
}
}
});
虽然看起来的keyPressed键的同时按下反复调用,一旦密钥被释放的keyReleased仅触发,所以我们那个时候触发一个布尔开关pressed
。
来源
2015-12-10 18:46:29
Jan
在该类的字段中创建一个布尔值。当'keyPressed'被调用时,你应该检查这个布尔值的值。如果它已经是'真的',什么都不要做。如果它是'false',则将其设置为'true'然后递增。在'keyReleaseded'中,将布尔值设置为'false' –
我添加了代码,但是如果我按两次左键,每次按下按钮时是否可以增加1? – happyfacelegion