2011-12-29 9 views
7

Esta pregunta surgió cuando un usuario anónimo votó negativamente una respuesta mía que involucraba a KeyListeners y sugirió el uso de Key Bindings en su lugar. Este usuario anónimo me informó que la interfaz KeyListener era una antigua solución AWT y no debería utilizarse.Comparando la funcionalidad entre KeyListeners y Key Fiting

Sin embargo, no sé si debería confiar en esa información por completo. Investigué tanto en varios sitios web, Oracle incluido, y no encontré nada con respecto a la funcionalidad de KeyListeners o Key Bindings. Soy consciente del hecho de que los dos realizan tareas similares, pero no estoy seguro de qué ocurre exactamente "detrás de escena", por así decirlo.

Me inclino por utilizar Key Bindings en proyectos futuros, simplemente porque adquirí investigaciones que sugerían que la interfaz KeyListener requería que el componente en cuestión se enfocara, mientras que Key Bindings no lo hacía. Pero, estoy confundido. ¿Por qué esto es tan? ¿Cómo se activan los enlaces clave de forma diferente a KeyListeners?

P.S. Estoy bastante seguro de que esto es una rareza, pero ¿hay alguna circunstancia en la que el uso de KeyListeners sea más apropiado?

Respuesta

10

How to Use Key Bindings explica los conceptos básicos.

Los enlaces se utilizan para asignar acciones específicas a un KeyStroke específico.

Un KeyListener es el último recurso cuando las demás abstracciones no funcionarán. Tal vez usarías un KeyListener cuando estés escuchando CUALQUIER KeyStroke. Por lo tanto, no sería práctico crear 26 enlaces para todas las letras del alfabeto.

Pero, de nuevo, en muchos casos, hay mejores API para usar. Por ejemplo, en lugar de escuchar KeyEvents en un campo de texto, usaría un DocumentListener para escuchar los cambios en el documento.

+0

¡Gracias! Eso ayudó mucho. He leído el enlace anteriormente, pero no tan a fondo como lo hice ahora. Estoy ajeno. Me salté por completo la parte que explica cómo funcionan los Enlaces de clave. >: O – fireshadow52

0

Yo sugeriría que usted utilice KeyBindings por muchas razones:

  • En realidad funciona más rápido que un KeyListener.
  • KeyBinding está más desarrollado y tiene mucho más que ofrecer como posibilidades.
  • Aunque necesitaría usar un temporizador Swing, es mejor para los juegos.
  • Es configurable y compartible.

Puede ser difícil usarlo a un KeyListener pero un KeyListener no podrá procesar varias pulsaciones de tecla en un juego.

Cuestiones relacionadas