2014-11-22 18 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