为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑8549860 2022-06-04 17:45:16
我试图在每次按下键时递减和递增一个值,代码看起来可以工作,但 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。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

尝试使用 keyReleased 而不是 keyPressed。这样事件只会触发 1 次。

keyPressed 事件将在您的按键被按下时触发(即使您只是快速按下并释放它,也会触发几个 KeyEvents)。如果将增加/减少绑定到“keyReleased”,它只会在按下后释放键时触发,因此只会发生 1 个增量。

此外,每次执行 if 语句时,都会将新的 KeyListener 添加到框架对象中。这将导致多次增加/减少操作。


查看完整回答
反对 回复 2022-06-04
?
手掌心

TA贡献1942条经验 获得超3个赞

如文档https://docs.oracle.com/javase/7/docs/api/java/awt/event/KeyEvent.html中所述,每次按键有 3 个按键事件

决定您希望使用哪个键事件,然后仅添加事件触发的实例,例如 KEY_PRESSED 事件。


查看完整回答
反对 回复 2022-06-04
  • 2 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信