Pregunta

Tengo un JPanel, que me gustaría para detectar los siguientes eventos

(1) Cuando el movimiento del ratón en

(2) Cuando el ratón se mueve hacia fuera

El (1) es fácil y rápido. (2) es un poco complicado. Actualmente, tengo para registrar evento en todos los componentes de todo JPanel. Si el vecino alrededor JPanel detecta un movimiento del ratón en el evento, esto también significa que está teniendo JPanel (2) situación. Sin embargo, este es un lugar sucio distancia, como agrego en nuevos componentes en el futuro, esta solución sucia se romperá.

Otro método es tener un temporizador para supervisar el JPanel. Si la posición del ratón no está dentro de JPanel en x segundos, considero que puedo JPanel está teniendo ratón salir evento.

Sin embargo, esto parece una manera sucia a mí también, como tener un temporizador independiente para llevar a cabo tal tarea común es una exageración.

¿Hay alguna forma mejor, lo que puede proporcionar la plataforma Java?

¿Fue útil?

Solución

Haga que su clase implemente MouseListener y agregarlo como un detector de ratón en el panel exterior. Usted debe obtener un evento de ratón a entrar cuando el ratón se mueve sobre el panel, y el ratón-salió cuando sale; independientemente de lo componentes del panel contiene.

Desde el JavaDoc:

  

vacío mouseEntered (MouseEvent e)            Se invoca cuando el ratón entra en un componente.

     

vacío mouseExited (MouseEvent e)            Se invoca cuando el ratón sale de un componente.

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