Alternative Implementierungen für ActionListener

Status
Nicht offen für weitere Antworten.

Saschiba

Mitglied
Hallo zusammen,

ich lese mich gerade in das Event-Handling ein und habe zu den ActionListenern eine Frage.

Wenn ich zum Beispiel in NetBeans einem Button einen ActionListener hinzufüge, wird das einfach als anonyme Klasse bewerkstelligt. So hab ich es auch in der Literatur und auf Webseiten gesehen.

Jetzt hab ich aber aus Interesse einfach mal eine eine normale Klasse geschrieben, die das ActionListener Interface implementiert. Dann hab ich die Klasse instanziert und das Objekt dann als ActionListener hinzugefügt. Das hat auch wunderbar geklappt. Das hat mir zumindest fürs Verständnis geholfen. Für 20 Buttons 20 Klassen zu schreiben ist irgendwie nicht so elegant.

Aber meine Frage ist nun, ob es noch weitere Möglichkeiten gibt, einem Button einen ActionListener hinzuzufügen. Auch wenn man es in der Praxis so nicht machen würde. Mich interessiert eher was generell formal richtig wäre. Zum Verständnis.

Vielen Dank!
Sascha
 

FatFire

Bekanntes Mitglied
Generell formal richtig ist Geschmackssache und schwer abhängig vom Einsatzzweck. Anonyme Klasse, innere Klasse, externe Klasse, mehrere Listener für mehrere Buttons, mehrere Listener für einen Button (um mehrere Aktionen bei einem Knopfdruck auszulösen z.B.) oder ein Listener für mehrere Buttons (entweder weil es mehrere Buttons mit gleicher Funktion an unterschiedlichen Stellen einer GUI gibt oder man die Unterscheidung, welcher Button gedrückt wurde lieber anhand des ActionCommands macht)...die Möglichkeiten sind vielfältig, einen Königsweg gibt es leider nicht. Insofern ist erlaubt, was bei dem gewünschten Einsatzzweck am meisten Sinn macht.

Bei ordentlicher Trennung von MVC streiten sich die Profis auch gerne, ob es sauberer ist die Listener in die Logik zu packen oder in die GUI und von dort aus dann Methoden in der Logik anzustoßen (zweiteres sehe ich persönlich als sauberer an).

Hm...irgendwie hab ich das Gefühl, ich hab an der Fragestellung vorbeigeschossen, aber ich kann nicht genau festmachen, warum...:autsch:

Gruß FatFire
 
S

SlaterB

Gast
1.
anonyme Klasse
2.
nicht anonyme Klasse, versteckt innerhalb einer anderen Klasse
3.
eigene ActionListener-Klasse in eigener Datei
4.
1., 2. oder 3., nur teilen sich mehrere Buttons eine Listenerklasse, in der actionPerformed wird per if unterschieden (oder komplexer)

edit:
Generell formal richtig ist Geschmackssache und schwer abhängig vom Einsatzzweck. Anonyme Klasse, innere Klasse, externe Klasse, mehrere Listener für mehrere Buttons, mehrere Listener für einen Button

genau meine Liste :shock:
 

Lexi

Bekanntes Mitglied
1. Anonyme Klasse
Java:
button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent event){
    //...
    }
}

2. Innere Klasse
Java:
public calss meinFenster{
// balbla 
button.addActionListener(new MyListener());
// blabla
class MyListener implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent event){
    //...
    }
}
}

3. Die Klasse, die den Button hat das Interface implementieren lassen, also selbst zum Listener machen.
Java:
public calss meinFenster implements ActionListener{
    //blabla
    button.addActionListener(this);

   @Override
    public void actionPerformed(ActionEvent event){
    //...
    }
}

Edit: Das kommt davon, wenn man mit Beispielen anfängt, und dazu noch auf die glorreiche Idee kommt das ganze im Forum Editor zu machen - man ist zu langsam :p
 
Zuletzt bearbeitet:

FatFire

Bekanntes Mitglied
Ich hatte das jetzt eigentlich so verstanden, dass er weiss, wie man es implementieren kann und wissen will, was am besten und korrekt ist? Oder nicht?

Gruß FatFire
 

Saschiba

Mitglied
Ich hatte das jetzt eigentlich so verstanden, dass er weiss, wie man es implementieren kann und wissen will, was am besten und korrekt ist? Oder nicht?

Gruß FatFire

Jein.... :)

Also erst mal danke für die schnellen Antworten. Bei der Frage ging es mir eigentlich mehr darum, in welchen Arten man es implementieren kann. Der Gedanke nach der Zweckmäßigkeit ist - wie du schon sagst - anhängig vom gesamten Kontext. Dennoch bin ich für Meinungen über eine Zweckmäßigkeit durchaus dankbar. :)
 

Saschiba

Mitglied
Naja, 50-50-Chance, war ja klar, dass ich daneben liege. :lol:

Joa, hehe!

Übrigens würde ich auch sagen, dass es besser ist die Listener in die GUI zu packen, da die Listener eher GUI abhängig sind als logikabhängig. Besonders wenn ich plane meine Logik in unterschiedlichen Programmen zu benutzen. So wäre die Wiederverwendbarkeit meiner Programmlogik gewahrt und ich kann meine GUI flexibel gestalten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Alternative zu Stream.forEach() Java Basics - Anfänger-Themen 6
T Alternative für switch case Java Basics - Anfänger-Themen 1
S Input/Output System.out.println - Manipulieren bzw. Alternative..? Java Basics - Anfänger-Themen 2
H Alternative Eingabe Java Basics - Anfänger-Themen 3
N Alternative für mehrdimensionales Array Java Basics - Anfänger-Themen 25
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
P Alternative zu scan.nextLine() Java Basics - Anfänger-Themen 4
N Benötige eine Alternative für einen GOTO Befehl Java Basics - Anfänger-Themen 2
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
I Input/Output Alternative zur Serialisierung/ ImageJ Objecte Java Basics - Anfänger-Themen 7
O Alternative zum swing-Timer Java Basics - Anfänger-Themen 5
kaoZ Alternative zu ToggleButton (Android/Java) Java Basics - Anfänger-Themen 12
H Best Practice Alternative Möglichkeit, um Eingaben vorzunehmen Java Basics - Anfänger-Themen 13
M renameTo alternative? Java Basics - Anfänger-Themen 11
A Alternative zum manuellen Swing programmieren?? Java Basics - Anfänger-Themen 4
J alternative zu getText() ? Java Basics - Anfänger-Themen 15
lulas[]args Alternative zu System.err.println(); Java Basics - Anfänger-Themen 5
xehpuk (Sichere) Alternative zu Class.forName() Java Basics - Anfänger-Themen 9
F Alternative zu JoptionPane Java Basics - Anfänger-Themen 7
A Alternative instanceof Java Basics - Anfänger-Themen 3
DStrohma Alternative Darstellung von Paketen in Eclipse Java Basics - Anfänger-Themen 2
S Datentypen LinkedList Konstruktor, add Alternative Java Basics - Anfänger-Themen 2
B Alternative zu einem Array gesucht Java Basics - Anfänger-Themen 3
S Webapplikation welche alternative zu gwt? Java Basics - Anfänger-Themen 2
E Strings hochzählen oder elegante alternative? Java Basics - Anfänger-Themen 3
hdi Alternative zu JTextArea? Java Basics - Anfänger-Themen 3
F Java Native Interface alternative Java Basics - Anfänger-Themen 4
M Erneutes Ausführen bestimmter Aktionen (GoTo-Alternative) Java Basics - Anfänger-Themen 6
C Alternative zur Klasse Java Basics - Anfänger-Themen 2
R Alternative zu "Format" in Java 1.4 Java Basics - Anfänger-Themen 3
R String replace nicht verwenden.alternative gesucht Java Basics - Anfänger-Themen 5
V Alternative zu Thread.sleep() ? Java Basics - Anfänger-Themen 6
G Alternative zu Split für 1.3 Java Basics - Anfänger-Themen 3
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
K In Eclipse Interface Implementierungen auslesen Java Basics - Anfänger-Themen 3
T Interfaces und Implementierungen Java Basics - Anfänger-Themen 12
K Implementierungen Java Basics - Anfänger-Themen 3
G Icon für App Java Basics - Anfänger-Themen 1
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
C negamax-Algorithmus für Tic-Tac-Toe spielt manchmal falsch Java Basics - Anfänger-Themen 10
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
M Minimax-Algorithmus für Vier gewinnt Java Basics - Anfänger-Themen 11
M GUI für Vier-Gewinnt. Java Basics - Anfänger-Themen 4
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation in Java verwenden für Calculator Java Basics - Anfänger-Themen 2
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
Ostkreuz Counter für Booleanwerte Java Basics - Anfänger-Themen 8
B Regex Ausdrücke für Monate Java Basics - Anfänger-Themen 7
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Jxhnny.lpz Randomisier für Buttons Java Basics - Anfänger-Themen 13
W Intuitive interface für Komponenten Java Basics - Anfänger-Themen 4
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
I Code für Bezahlsystem (auch bei Offline Aktivität) Java Basics - Anfänger-Themen 7
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M monte carlo Algorithmus für 4 gewinnt Java Basics - Anfänger-Themen 12
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
M generate Methode für Streams Java Basics - Anfänger-Themen 6
I Datenmodell für "Tags" Java Basics - Anfänger-Themen 6
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
B Mit Countdown Midnestdauer für Teilaufgabenerledigung erzwingen Java Basics - Anfänger-Themen 8
J File length als Prüfwert für Download Java Basics - Anfänger-Themen 5
K Spieleidee gesucht für Informatikprojekt - JAVA (BlueJ)? Java Basics - Anfänger-Themen 15
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
javamanoman Java für Online Banking Java Basics - Anfänger-Themen 12
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
I SQL / JPA Query für StartDate und EndDate Java Basics - Anfänger-Themen 1
T getMethode für ein Array Java Basics - Anfänger-Themen 2
Fats Waller Farben mixen für den Hintergrund ? Java Basics - Anfänger-Themen 1
H Suche jemanden für kleine Uni-Abgabe/ mit Vergütung Java Basics - Anfänger-Themen 1
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
N Api nur für Textdatein (.txt) Java Basics - Anfänger-Themen 2
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
R Ist Java das Richtige für mich? Java Basics - Anfänger-Themen 4
E Mittelquadratmethode für Hexadezimalzahlen Java Basics - Anfänger-Themen 1
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
O Wie erstelle ich eine Instanz in einer Klasse für die ich die Instanz will? Java Basics - Anfänger-Themen 4
S BubbleSort für ArrayLists Java Basics - Anfänger-Themen 3
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
L Konzept für Quiz Java Basics - Anfänger-Themen 33
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
B Datentyp für Einzelnes Objekt oder Liste Java Basics - Anfänger-Themen 9
D Welche GUI Library für eine Client Server Chat App Java Basics - Anfänger-Themen 14
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben