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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top