【问题标题】:How to know how many milliseconds Key is pressed in java如何知道在java中按下了多少毫秒键
【发布时间】:2014-08-16 20:24:22
【问题描述】:

我想找出在 java 中按下某个键的时间(以毫秒为单位),但我的结果总是打印不同的数字,即使我按下该键的时间少于一秒或更长时间。 例如,如果我按下不到一秒,则显示 30、45 或 98,如果按下 3 秒,则显示 35、50、120 我试过这段代码

long keyPressedMillis;
long keyPressLength;

.

public void keyPressed(KeyEvent arg0) {
    // TODO Auto-generated method stub
    int codigo = arg0.getKeyCode();
    if(codigo == KeyEvent.VK_SPACE)
    {
           keyPressedMillis = System.currentTimeMillis();           
    }
}

.

public void keyReleased(KeyEvent arg0) {
    // TODO Auto-generated method stub
    int codigo = arg0.getKeyCode();
    if(codigo == KeyEvent.VK_SPACE)
    {
           keyPressLength = System.currentTimeMillis() -keyPressedMillis;           
           System.out.println(keyPressLength);          
    }
}

【问题讨论】:

  • 因为如果我按下不到一秒会显示 30、45 或 98,如果我按下 3 秒会显示 35、50、120,如果我按下 3 秒,我希望显示更大的数字(更大的间隔)

标签: java time keypress milliseconds keyrelease


【解决方案1】:

keyPressed 可以(并且将会)在按键被按下时重复调用。您应该输入可以检查这是否是重复的关键事件的标志...

int lastKey = -1;

public void keyPressed(KeyEvent arg0) {
    // TODO Auto-generated method stub
    int codigo = arg0.getKeyCode();
    if (codigo != lastkey) {
        lastkey = codigo
        if(codigo == KeyEvent.VK_SPACE)
        {
           keyPressedMillis = System.currentTimeMillis();           
        }
    }
}

当然,在您的 keyReleased 事件处理程序中,您应该重置此值,这样您就不会错过新的按键;)

【讨论】:

  • 完美运行,非常感谢!
  • 做出了不错的改变 ;)
猜你喜欢
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
相关资源
最近更新 更多