Frage

Ich habe ein JPanel, das ich die folgenden Ereignisse erkennen möchte

(1) Wenn sich die Maus einzieht

(2) Wenn sich die Maus auszieht

Das (1) ist schnell einfach. (2) ist etwas schwierig. Derzeit muss ich ein Ereignis bei allen Komponenten rund um JPanel registrieren. Wenn der Nachbar in der Nähe von JPanel eine Mausbewegung bei der Veranstaltung feststellte, bedeutet dies auch, dass JPanel (2) Situation hat. Dies ist jedoch ziemlich schmutzig, da ich in Zukunft neue Komponenten hinzufüge, diese schmutzige Problemumgehung brechen wird.

Eine andere Methode besteht darin, einen Timer zur Überwachung des JPanel zu haben. Wenn die Mausposition innerhalb von x Sekunden nicht innerhalb von JPanel liegt, kann ich in Betracht ziehen, dass JPanel das Mausereignis auszieht.

Dies scheint mir jedoch auch ein schmutziger Weg zu sein, da ein separater Timer für eine solche gemeinsame Aufgabe übertrieben ist.

Gibt es einen besseren Weg, welche Java -Plattform kann bieten?

War es hilfreich?

Lösung

Lassen Sie Ihre Klasse Mouselistener implementieren und fügen Sie sie als Maushörer auf der äußersten Panel hinzu. Sie sollten ein mit Maus eingeführter Ereignis erhalten, wenn sich die Maus über das Panel bewegt und wenn sie auf Maus ausgeführt wird. Unabhängig von den Komponenten, die das Panel enthält.

Aus dem Javadoc:

void -mausentische (Mouseevent E), die beim Betreten der Maus in eine Komponente eingereicht werden.

void mouseexited (mouseevent e) aufgerufen, wenn die Maus eine Komponente verlässt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top