[JAVA] Action vs ActionListener

Pagina: 1
Acties:

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
Ik wil weten hoe je nou een keuze maakt tussen deze twee?

Het gaat hier om het gebruik binnen swing. Ik gebruik nu vaak de Action class, of beter gezegd: om mijn events af te handelen gebruik ik voor elke Button (etc ) een inner class die AbstractAction overerft.

Het gevolg is dat er bij redelijk wat Buttons er ook behoorlijk veel inner classes ontstaan dit is nou niet altijd even duidelijk en zou met het implementeren van de ActionListener interface behoorlijk verkleint kunnen worden.

wanneer ga ik nou voor de een en wanneer voor de ander kiezen :?

is het ook netjes om beide door elkaar te gebruiken. ik weet dat het kan, maar het gaat mij meer om het ontwerp principe.

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 16-05 07:44
Er staat ook een topic op javahova over Action's en ActionListeners .. misschien heb je er wat aan :

http://forum.javahova.net/topic.php?id=46

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
-P@tRiCk- schreef op 21 december 2002 @ 20:33:
Er staat ook een topic op javahova over Action's en ActionListeners .. misschien heb je er wat aan :

http://forum.javahova.net/topic.php?id=46
thnx voor de link maar na de derde post wordt er niks nuttigs meer verteld |:(

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
CyBoB: Ik wil weten hoe je nou een keuze maakt tussen deze twee?
Een Action is een ActionListener met wat extra, dus je moet je afvragen of je van deze extra functionaliteit gebruik wilt maken.

Het onderscheid tussen een Action en een ActionListener is dat een ActionListener alleen maar een aktie afhandeld: als er op een knop wordt gedrukt, wordt de actionPerformed methode aangeroepen, die dan weer het een en ander doet. Een Action beschrijft echter een volledige aktie: een tekst, een omschrijving, een icoontje, een mnemonic, een accelarator enzovoorts. Deze beschrijving wordt gebruikt om de button of menu-item te configureren. Als de Action wordt aangepast, zie je de wijziging direct terug in de button. Je kan een Action bijvoorbeeld ook disablen, waardoor de knop niet meer klikbaar wordt.

Je zou dit allemaal ook direct op de button kunnen doen, maar dat is geen fraaie manier van werken omdat je dan een sterke link krijgt tussen de GUI en de afhandeling van events. Met de Action interface kan je dus model gebaseerd werken met akties.
Het gevolg is dat er bij redelijk wat Buttons er ook behoorlijk veel inner classes ontstaan dit is nou niet altijd even duidelijk en zou met het implementeren van de ActionListener interface behoorlijk verkleint kunnen worden.
Dat is niet percee een gevolg van de ActionListener. Jij bedoelt dat je dan in 1 ActionListener een switch gaat doen over alle verschillende knoppen en voor elke knop iets anders gaat doen. Dit is een manier van werken die sterk af te raden is: gebruik in ieder geval voor elke knop een andere ActionListener, maar nog beter dus een Action.
wanneer ga ik nou voor de een en wanneer voor de ander kiezen :?
Ik zou zoveel mogelijk gebruik maken van een Action en ook de functionaliteit van de Action gebruiken om de GUI gebruiksvriendelijker te maken en je design te verbeteren :) . Stop de Action implementaties daarom ook liever niet in dezelfde klasse als de GUI.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
mbravenboer schreef op 21 December 2002 @ 21:11:
[...]


Een Action beschrijft echter een volledige aktie: een tekst, een omschrijving, een icoontje, een mnemonic, een accelarator enzovoorts.
ja dit was mij bekend, maar zag dit meer als een bijkomstigheid dan als de manier om een knop te configgen
Stop de Action implementaties daarom ook liever niet in dezelfde klasse als de GUI.
Tot nu toe gebruik ik vaak innerclasses. in principe is dat een anders class dan de GUI. Of wil je hier mee zeggen dat het ook echt helemaal zijn echten "file" moet krijgen. bv MyAction.java (om he maar ff simple te houden :) ) :?

ik kan uit je verhaal dus opmaken dat de voorkeur ligt bij de Action

zijn er mensen die het hier niet mee eens zijn :Y)

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
CyBoB: ja dit was mij bekend, maar zag dit meer als een bijkomstigheid dan als de manier om een knop te configgen
Dan zie je dit nu hopelijk anders ;) .
Tot nu toe gebruik ik vaak innerclasses. in principe is dat een anders class dan de GUI. Of wil je hier mee zeggen dat het ook echt helemaal zijn echten "file" moet krijgen.
Yepz. Anders is je aktie (in principe) alleen te gebruiken in de klasse GUI.java. Het idee van Actions is onder andere juist dat je akties in verschillende GUIs kan inzetten. Soms is dit onnodig, soms lijkt dit onnodig, soms is het later nodig ;) .
zijn er mensen die het hier niet mee eens zijn :Y)
grapjas :D

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1