[英]Increment/Decrement Operators not working correctly
每次按下一個鍵時,我都試圖遞減和遞增一個值,代碼看起來可以正常工作,但 c 值沒有正確響應。 這是代碼:
if (...) {
...
} else if (a == 1) {
frame.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent f) {
switch (f.getKeyCode()) {
case KeyEvent.VK_F:
setFullScreen();
break;
case KeyEvent.VK_LEFT:
c--;
textField.setText("c:" + c);
break;
case KeyEvent.VK_RIGHT:
c++;
textField.setText("c:" + c);
break;
}
}
}
}
就我而言,如果按下左鍵,值 c(即 1)將變為 -2 而不是 0。
每次按鍵有 3 個按鍵事件,如文檔https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html 中所述
決定你想使用哪個鍵事件,然后只添加事件觸發的實例,比如在 KEY_PRESSED 事件上。
嘗試使用 keyReleased 而不是 keyPressed。 這樣事件只會觸發 1 次。
keyPressed 事件將在您按下鍵時觸發(即使您只是快速按下並釋放它,也會觸發多個 KeyEvent)。 如果將增加/減少綁定到“keyReleased”,它只會在按下后釋放鍵時觸發,因此只會發生 1 次增量。
同樣,每次執行 if 語句時,都會向框架對象添加一個新的 KeyListener。 這將導致多次增加/減少操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.