как долго нажимается клавиша в Java

1

хорошо, я делаю программу, и она должна что-то делать после нажатия клавиши "f" в течение 3 секунд, если она не была нажата в течение 3 секунд, тогда она ничего не должна делать, я знаю, как узнать, есть ли ключ нажатие и отключение, но я не нахожу никакого способа узнать время нажатия

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
    // to know if a key is being pressed

}
private void formKeyReleased(java.awt.event.KeyEvent evt) {                                
    // to know when a key is released

}  

Изменить: Nevermid об этих ответах, это не сработало. чтобы заставить его работать, я должен был сделать это:

private long keyPressedMillis;
private boolean alreadyPassed==false;
...
private void formKeyPressed(KeyEvent event) {
if(alreadyPassed==false)
keyPressedMillis = System.currentTimeMillis()
alreadyPassed=true;
}
private void forKeyReleased(KeyEvent event) {
long keyPressLength = System.currentTimeMillis() - keyPressedMillis;
    alreadyPassed=false;
    System.out.println("Key Pressed "+keyPressLenght+" ms");

}
Теги:
keyevent

2 ответа

0

Вам просто нужно отслеживать, когда был нажат ключ, и рассчитать, как долго он будет выпущен.

long keyPressedMillis;

private void onKeyPressed(KeyEvent event) {
    keyPressedMillis = System.currentTimeMillis()
}

private void onKeyReleased(KeyEvent event) {
    long keyPressLength = System.currentTimeMillis() - keyPressedMillis;
    if (keyPressLength >= 3000) {
        //do whatever you need
    }
}
  • 0
    я не понял, что делает System.currentTimeMillis (), вы можете это объяснить?
  • 0
    это не сработало, я сделал System.out.println ("SS"); а затем нажимал клавишу в течение 4 секунд, но ничего не печатал
0
long whenTheKeyWasPressed;

private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
    whenTheKeyWasPressed = System.currentTimeMillis();
}

private void formKeyReleased(java.awt.event.KeyEvent evt) {                                
    long now = System.currentTimeMillis();

    if ((now - whenTheKeyWasPressed) >= 3000L) {
        ...
    }
}  

Тем не менее, это только активирует действие, когда ключ освобождается. Если вы хотите активировать действие, когда время достигает 3 секунд, запустите таймер качания в методе keyPressed() и остановите его из метода keyReleased().

  • 0
    хорошо, спасибо, я проверю таймер класса
  • 0
    это не сработало, я хотел, чтобы оно показывало сообщение типа "SS" после нажатия 3 секунды на кнопку, но ничего не показывало
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню