Übergeben von Ereignissen an Eltern

8

Ich möchte eine App erstellen, in der einige Ereignisse behandelt werden sollen, als ob sie an übergeordnete Container geliefert würden. Zum Beispiel habe ich eine JPanel, die JLabel enthält. Der obere JPanel implementiert Mausdruck und zieht jetzt. Was muss ich tun, damit die Ereignisse so aussehen, als wären sie in JPanel angekommen, anstatt auf dem Etikett selbst? (Das Ändern des Quellobjekts ist wichtig.)

Gibt es eine bessere Lösung als die Ereignisse tatsächlich zu implementieren und sie im übergeordneten Objekt zu replizieren? (Dies würde nach einigen Objekten mit & gt; 5 Kindern mühsam werden).

    
viraptor 29.09.2010, 01:54
quelle

3 Antworten

10

Bei Ihrem Ereignis-Listener können Sie das Ereignis an die übergeordnete Komponente senden.

Being myEvent das Ereignisbehandlungsfunktionsargument:

%Vor%

Aber diese Lösung bedeutet, dass für jedes hinzuzufügende Element ein neuer EventListener erstellt wird.

Sie können also einen einzelnen Event-Handler erstellen und ihn wiederverwenden, indem Sie ihn allen ausgewählten untergeordneten Elementen hinzufügen:

%Vor%     
Tomas Narros 29.09.2010, 06:26
quelle
2

Sie sollten das Ereignis konvertieren, bevor Sie es an das übergeordnete Element senden. Die Konvertierung umfasst die Koordinatenübersetzung in Bezug auf den übergeordneten Verwandten.

%Vor%     
Wojciech Wirzbicki 25.08.2015 13:11
quelle
-1

Mausereignisse werden automatisch auf die tiefste Komponente ausgerichtet, die Maus-Listener hat .

Um Ihr Ziel zu erreichen, können Sie einfach alle Maus-Listener auf dem JLabel entfernen und es wird nie als Ziel für Mausereignisse ausgewählt.

Der folgende Code deaktiviert Maus-Listener für die angegebenen Komponenten und ihre untergeordneten Elemente rekursiv:

%Vor%     
qwertzguy 10.06.2016 00:25
quelle