PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigene Listener implementieren (JAVA)


instinct
2008-07-10, 18:56:41
Ich habe ein kleines Problem bzw. bin ich mir nicht sicher, ob ich richtig liege.

Ich muss herausfinden, welche Listener an einer übergebenen Componente hängen.
Nun ist es doch so, wenn man einen eigenen Listener implementiert, so MUSS dieser doch von java.util.EventListener bzw. von einem Unterinterface davon abgeleitet werden oder sehe ich das falsch?

Hardwaretoaster
2008-07-10, 20:00:38
Um eins vorweg zu nehmen: Bitte nicht drauf verlassen, bin bei Leibe keine JAVA-Profi, aber ich würde sagen ja, und für dein Vorhaben sollte sich getListeners (Methode von java.awt.component) verwenden lassen, oder?

instinct
2008-07-10, 20:55:06
Ja das habe ich auch so gemacht. Dummerweise bekomme ich dann auch alle "SystemListener" angezeigt, also jene, die nicht direkt vom ProgrammSchreiber eingebunden wurden.
Mein Problem ist jetzt, dass ich nicht weiss, wie ich nur diejenigen bekomme, die der Programmschreiber auch wirklich eingebunden hat.
Hat da jemand nen Tipp?

Dr.Doom
2008-07-11, 09:24:22
public EventListener[] getListeners( Class listenerType )
MouseListener[] mls = ( MouseListener[] )( c.getListeners( MouseListener.class ) )Quelle (http://java.sun.com/j2se/1.3/docs/api/java/awt/Component.html#getListeners(java.lang.Class))

D.h. also, du musst die Klassen der selbstdefinierten Listener kennen, die angehängt wurden.

Wenn du getListeners( java.util.EventListener ) aufrufst, dann bekommst du natürlich alles, was dranhängt.

instinct
2008-07-11, 09:49:45
Genau das habe ich schon versucht, aber ich bekomme garkeine Listener, wenn ich getListener(EventListener.class) aufrufe. Ich bekomme z.B. die KeyListener nur, wenn ich getListener(KeyListener.class) aufrufe.

Mad-Marty
2008-07-12, 22:40:26
Von einem IF kannst und sollst du garnichts ableiten ;)
Implementieren sollst du es :D

Bietet die Komponente keine informationsmöglichkeit über die angehangenen listeners?