Rileva mouse Spostare evento su JPanel
Domanda
Ho un JPanel, che vorrei rilevare i seguenti eventi
(1) Quando il movimento del mouse in
(2) Quando il mouse si muove fuori
L'(1) è rapida facile. (2) è un po 'complicato. Attualmente, devo registrare evento a tutti i componenti intorno JPanel. Se il vicino intorno JPanel rilevato uno spostamento del mouse in evento, ciò significa anche che sta avendo JPanel (2) situazione. Tuttavia, questo è un piuttosto sporca di distanza, come aggiungo in nuovi componenti, in futuro, questa soluzione sporca si romperà.
Un altro metodo è quello di avere un timer per monitorare il JPanel. Se la posizione del mouse non è all'interno JPanel entro x secondi, posso considerare JPanel sta avendo il mouse uscire evento.
Tuttavia, questo sembra un modo sporco anche a me, come avere un timer separato per svolgere tale compito comune è eccessivo.
C'è un modo migliore, che la piattaforma Java può fornire?
Soluzione
Avere la classe implementare MouseListener e inserirlo come listener del mouse sul pannello esterno. Si dovrebbe ottenere un evento di mouse è entrato quando il mouse si muove sopra il pannello, e il mouse-uscito quando lascia; indipendentemente da qualsiasi componenti del pannello contiene.
Dal JavaDoc:
vuoto mouseEntered (MouseEvent e) Richiamato quando il mouse entra in un componente.
vuoto mouseExited (MouseEvent e) Richiamato quando il mouse esce da un componente.