我想通过我的箭头键控制一个参数当我按下参数增加1时,当我按下它时它应该递减,但它真正发生的是当我按下向上箭头键时键事件是根据按键的时间函数调用了很多次。只需快速单击即可使值增加10倍。我的目标是每次点击只增加一次值,或者至少减慢关键事件的速度。提前谢谢!
这是我的代码:
frame.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
switch (keyCode) {
case KeyEvent.VK_UP:
currentParam++;
if(currentParam>=90)
currentParam = 45;
System.out.println(currentParam);
}
}
答案 0 :(得分:1)
您需要某种标志来表明事件已被处理。一旦释放钥匙,这应该重置。
一种常见的方法是使用一系列boolean
标记或Map
键入每种类型的键或List
,其中包含所有当前活动的键。
您选择的将取决于您计划的其余部分。
你真的应该避免使用KeyListener
,它们很麻烦且变化无常。更好的解决方案是使用密钥绑定API,查看How to use key bindings