考慮一個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