增量/减量运算符无法正常工作

我试图在每次按下键时递减和递增一个值,代码看起来可以工作,但 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。


慕尼黑8549860
浏览 71回答 2
2回答

阿晨1998

尝试使用 keyReleased 而不是 keyPressed。这样事件只会触发 1 次。keyPressed 事件将在您的按键被按下时触发(即使您只是快速按下并释放它,也会触发几个 KeyEvents)。如果将增加/减少绑定到“keyReleased”,它只会在按下后释放键时触发,因此只会发生 1 个增量。此外,每次执行 if 语句时,都会将新的 KeyListener 添加到框架对象中。这将导致多次增加/减少操作。

手掌心

如文档https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html中所述,每次按键有 3 个按键事件决定您希望使用哪个键事件,然后仅添加事件触发的实例,例如 KEY_PRESSED 事件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java