SWT (alle) Listener bzw. ModifyEventListener entfernen

AyKay

Mitglied
Hallo zusammen.

Ich würde gerne einen ModifyListener (bzw. auch gerne alle) Listener eines Objekts entfernen. Das Objekt ist in meinem Fall org.eclipse.swt.widgets.Text.
Es gibt ja die Methode removeModifyListener(ModifyListener). Dazu müßte ich vorher eine Referenz auf den ModifyListener bekommen. Alles, was ich finde ist: getListeners(EventType). Folgendes funktioniert aber nicht:

Java:
			Listener[] modifyListeners = text.getListeners(SWT.Modify);
			for (Listener listener : modifyListeners)
			{
				if (listener != null)
					text.removeModifyListener((ModifyListener)listener);
			}

Läuft auf folgende ClassCastException:
Exception in thread "main" java.lang.ClassCastException: org.eclipse.swt.widgets.TypedListener cannot be cast to org.eclipse.swt.events.ModifyListener

Hat jemand einen Schimmer, welche Methoden man benutzt?
Danke!
 
Zuletzt bearbeitet:
Okay, dann poste ich mal die Lösung. Bzw. meine Lösung.

Java:
			Listener[] listeners = text.getListeners(SWT.Modify);

			if (listeners.length > 0)
			{
				TypedListener typedListener = (TypedListener)listeners[0];
				FieldModifyListener fieldModifyListener = (FieldModifyListener)typedListener.getEventListener();
				text.removeModifyListener(fieldModifyListener);
			}

In diesem Fall iteriere ich nicht über alle ModifyListener, weil ich weiß, daß es nur einen gibt ([0]). FieldModifyListener ist meine EventListener-Klasse.

Peinliche Randnotiz: Das ist ein altes Projekt von mir und ich hatte diese Methodik schon an anderer Stelle genutzt.
 

Neue Themen


Zurück
Oben