Pregunta

Estoy trabajando en un editor de mapas para mi proyecto de la universidad. Y yo tenía un problema que el panel de mapa no está escuchando evento clave, mientras que lo que debería. Esto sucede cuando agrego un ToolBarPane (que se extiende JPanel) con JComponent como JButton, JComboBox que implementa ActionListener en él y el panel de mapa (que se extiende el JPanel) junto al marco (utilicé BorderLayout). Tengo comunicado System.out.println a prueba si se recibe la pulsación de tecla, y éste no se imprime, si quito la barra de herramientas, el detector de teclas funciona de nuevo, por lo que es el mouseListenner se desactiva al igual que el keyListener, lo que significa que puede' t asa eventos de prensa, etc, pero el MouseListener funciona bien y todavía puede manejar desplazamiento del ratón.

Esta es una captura de pantalla de cómo funciona sin la ToolBarPane

http://img684.imageshack.us/img684/3232/sampleku.png

Tenga en cuenta que puede utilizar el ratón para poner imágenes en el mapa, también puede seleccionar imágenes con el ratón como una herramienta láser, y pulsando la tecla numérica se puede cambiar entre diferentes imágenes, esto funciona bien hasta que añadir la ToolBarPane que muestra como esto:

img291.imageshack.us/img291/8020/failve.png (Por favor, agregue http antes de eso, sólo puedo publicar un hipervínculo)

(puedo enviar imágenes no aquí porque soy un nuevo usuario)

Con la ToolBarPane en que ya no era capaz de manejar el evento clave.

supongo que podría por que el enfoque que ha transferido a ese panel de alguna manera, pero no está seguro en absoluto.

Does y el cuerpo lo saben y me puede ayudar?

Muchas gracias

¿Fue útil?

Solución

Le sugiero que use el InputMap y WHEN_ANCESTOR_OF_FOCUSED_COMPONENT o algo similar. Extracto de cómo utilizar Key Bindings :

JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
El componente contiene (o es) el componente que tiene el foco. Este mapa de entrada se utiliza comúnmente para un componente compuesto

Esto ha funcionado muy robusta para mí. Echar un vistazo a mi otro post para obtener más información y ejemplos de código reales:

entrada de teclado para un juego en Java

o este tutorial:

El columpio: Comprensión de entrada / Mapas de acción

Otros consejos

Usted no debe estar usando un KeyListener.

Oscilación fue diseñado para utilizar Configuración de las teclas que es mucho más flexible. Mira mi breve resumen de Key Bindings que también incluye un enlace al tutorial oscilación, que conains mucho más detalle.

(puedo enviar imágenes no aquí porque soy un nuevo usuario)

imagen

Un no ayuda mucho de todos modos. Si necesita más ayuda puesto sus SSCCE que muestra el problema (después de probar la sugerencia anterior).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top