# mehrere Actionlistener



## lemalsaint (15. Okt 2006)

Hallo, ich hab da eine kurze Frage:
Kann ich in einer Klasse mehrere Actionlistener haben, und dann z.B. einem Button den Actionlistener 1 und nem anderen Actionlistener 2 zuordnen? Mit event.getSource geht das was ich will nicht, da die ich für den selben Button verschiedene Actionlistener brauche...
Vielen Dank für Antworten
Mfg
Olli


----------



## SlaterB (15. Okt 2006)

ein Button kann mehrere ActionListener haben,
die getrennt, entweder schnell anonym oder in eigenenen Klassen, definiert werden,

viele Buttons können den gleichen ActionListener haben, nach Source wird unterschieden,

einem Button einen ActionListener mehrmals zuweisen macht offensichtlich wenig Sinn,

--------

dein Problem ist nun nicht ganz klar,
> ich in einer Klasse mehrere Actionlistener haben
in einer Klassen kann man beliebig viele Unterklassen definieren,
-> beliebig viele ActionListener, die nur wenig mit der Klasse an sich zu tun haben

die Klasse selber ist aber nur eine Klasse, also auch nur eine Art von ActionListener

> und dann z.B. einem Button den Actionlistener 1 und nem anderen Actionlistener 2 zuordnen
> Mit event.getSource geht das was ich will nicht, da die ich für den selben Button verschiedene Actionlistener brauche

ein ActionListener zwei Buttons zuzuordnen ist kein Problem, auch nicht danach per getSource zu unterscheiden,

wie es mit anderen ActionListenern auf denselben Button zu Konflikten kommen soll ist nicht ersichtlich,
was interessieren die anderen ActionListener?


----------



## lemalsaint (15. Okt 2006)

Also das mit den Unterklassen könnte ich ja ausprobieren, ich dachte nur dass es eventuel möglich ist die methode ActionPerformed mehrmal in einer Klasse zu haben.
Das Problem bei mir ist folgendes: Ich schreibe ein Spiel Schiffeversenken. Ich will nun in einer Klasse, in der das Spielfeld erzeugt wird gleich die Actionlistener für die einzelnen Buttons adden. Zuerst allerdings sollen bei ActionPerformed die Schiffe gesetzt werden, anschließend sollen geschossen werden... Die Source bleibt gleich, nur soll erst 5 mal Schiffgesetzt, dann schießen der ActionListener sein...
Danke für deine Antwort auf jedenfall
Grüße


----------



## SlaterB (15. Okt 2006)

redest du von mehreren Aktionen, die auf einen Mausklich hin passieren sollen,
oder von einer wechselnen Funktion des Buttons, 
je nach Spielsituation soll ein Klick unterschiedliche Wirkung haben?

in beiden Fällen bietet es sich an, genau einen ActionListener für den Button zu haben, der sich dann um die Logik kümmert,
das Hintereinanderausführen ist nicht schwer und Abfrage des aktuellen Spielzustandes ist in einem ActionListener gut aufgehoben,
je nachdem was zu tun ist, kann dann gerne eine von zwei Unteroperationen gerufen werden


----------



## lemalsaint (15. Okt 2006)

Also die Aktionen sollen nacheinander ausgeführt werden, und ich hab jetzt gerade auch einen Zähler in den Actionlistener eingebaut, der nach dem alle Schiffe gesetzt sind die Funktionsweise ändert. Ich dachte anfangs das sei nicht elegant, aber nun gut
vielen dank


----------

