簡體   English   中英

遞增/遞減運算符無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM