teclado keypressed ejemplo docs java swing keyboard keylistener keyevent

java - keypressed - Personajes de KeyEvent



keylistener javafx (3)

  1. KeyEvent.VK_ASTERISK es una constante reservada para la tecla del teclado (virtual) que tiene * marcada en ella. No tiene que coincidir con el personaje que se produce cuando alguien presiona la tecla.

    Si desea utilizar las constantes de VK, debe escuchar los eventos de teclado y teclado y usar el método KeyEvent.getKeyCode() . Si desea utilizar caracteres, debe escuchar los eventos clave escritos y utilizar el método KeyEvent.getKeyChar() .

    Algunos códigos clave pueden coincidir con el personaje solo porque es más fácil definirlo de esa manera; no hay una necesidad real de hacerlo de esa manera.

  2. Usted dice que obtuvo un VK_8 de getKeyCode para escribir el asterisco. ¿Presionó una tecla de asterisco real o tuvo que escribir Shift-8?

Tengo una pregunta sobre un KeyListener . Cuando obtengo el KeyEvent y hago un getKeyChar() estoy haciendo tyring para comparar y * asterisk y voy a usar uno de los KeyEvent.VK_ define que funciona para muchas de las teclas.

Pero para esta clave particular y algunas otras, los valores no coinciden.

El * getKeyChar() devolverá 0x2a y el getKeyCode() devuelve 0x38 . La definición para 0x38 es VK_8 no VK_ASTERISK que es 0x97 .

¿Por qué ciertos códigos clave coinciden y no otros? La mayoría hace thouh. Si solo hago una comparación de personajes, funciona ( == ''*'') , pero no estoy seguro de si esta es la mejor solución.

Gracias por toda la ayuda!


OK, estás malentendiendo algo.

Las claves son claves, y los símbolos son símbolos. Los símbolos son resultados de pulsaciones de teclas, y la misma tecla puede producir diferentes símbolos según las circunstancias (combinaciones de teclas como Alt , Control , Shift , etc.).

Entonces, el código de clave VK_8 significa la clave que puede producir símbolos 8 , * y posiblemente otros dependiendo de la localización del teclado.

Y la * tecla dedicada en el teclado numérico es VK_MULTIPLY - puede producir solo un símbolo * (que yo sepa).

Probablemente no debería preocuparse por la tecla presionada por el usuario, sino por el símbolo que produjo esta acción del usuario.

Esta información la puede obtener con getKeyChar() , pero tenga en cuenta que si el usuario presiona la combinación Shift 8 para producir * en realidad son dos teclas ( Shift y 8 ) y obtendrá dos eventos, y el primero (para Shift ) producirá un símbolo ilegible