2014-11-22 52 views
0

我想通过我的箭头键控制参数,当我按下参数增加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); 
       } 
      } 

回答

1

你需要某种标志,表示该事件已处理。一旦钥匙被释放,这应该被重置。

通常的方法是使用一系列boolean标志或一个Map键入每种类型的密钥或List其中包含所有当前活动的密钥。

你选择哪一个将取决于你的程序的其余部分。

你真的应该避免使用KeyListener s,它们很麻烦,变幻莫测。更好的解决方案是使用密钥绑定API,看看How to use key bindings