Een algemeen niet begrepen punt: Listeners zijn geen hokus-pocus. Het is gewoon een standaard Java constructie.
Een ActionListener is een interface. Zoals je hopelijk weet geeft die interface aan waaraan implementaties van die interface moeten voldoen.
Via een interface kan je instanties van klassen (objecten) gebruiken zonder dat je de concrete implementatie kent. Je roept namelijk gewoon methoden aan via deze interface.
Veel userinterface componenten kunnen akties produceren: enters in tekstvelden, klikjes op knoppen enzovoorts. Het systeem in Java om een stukje code aan te roepen als er een aktie plaats vindt werkt via een interface 'ActionListener'. Zoals ik net heb uitgelegd kan de knop hierdoor een stukje code aanroepen zonder dat hij de concrete implementatie van die code kent: generiek dus.
Je kunt aan componenten een ActionListener toevoegen. Beter gezegd: je kunt een instantie toevoegen van een klasse die de interface ActionListener implementeert. Als er wordt gezegd 'je voegt een ActionListener toe' wordt er dus bedoeld: 'je voegt een object toe wat zich kan manifesteren als een ActionListener'.
Als je 'this' toevoegt als ActionListener moet de klasse van 'this' de interface ActionListener implementeren....
Er zijn op dit punt dus helemaal geen verschillen tussen AWT en Swing.
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment