2011-09-24 6 views
7

Cuando escribe en un cuadro de texto y mantiene presionada una tecla, obtiene (a ....... aaaaaaaaaaaaaaa), dependiendo de la demora inicial de la pulsación de tecla.Eliminación del retraso de pulsación inicial

addKeyListener(new KeyAdapter() { 
    public void keyPressed(KeyEvent e) { 
     // Handle key press here 
    } 

Estoy creando un juego en el que los reflejos del usuario son muy importantes. ¿Cómo puedo eliminar este retraso por completo? El código anterior no funciona. También intenté reemplazar el proceso KeyEvent sin suerte.

Respuesta

2

Estos eventos son generados por el JVM/sistema operativo y, a menos que le indique al usuario que cambie la configuración de retraso de tecla/repetición de tecla, me temo que tendrá que trabajar un poco más.

Sugiero que cree un temporizador que active eventos en la frecuencia correcta, inicie y detenga el temporizador al keyPressed/keyReleased.

+0

¿Hay alguna manera más fácil? – David

+0

@David: No lo creo, creo que aioobe tiene razón, ya que no hay una solución alternativa, ya que todo está basado en el sistema operativo. – Nightfirecat

+1

Tenga en cuenta que este enfoque solo funciona en Windows, ya que genera varios eventos KeyPressed (a medida que se mantiene presionada la tecla) y solo un evento KeyReleased (cuando se suelta la tecla). Sin embargo, creo que otro sistema operativo generará un par de eventos keyPressed/keyReleased a la frecuencia de frecuencia de repetición que anula el propósito de usar un temporizador. No he visto una buena solución independiente de plataforma para este problema. – camickr

Cuestiones relacionadas