Detección de movimiento del ratón Evento En JPanel
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?
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.