ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage?

Jack159

Bekanntes Mitglied
Hallo,

Wenn es darum geht einen JFrame mit mehreren Buttons zu erstellen, in dem jeder Button etwas anderes tun soll, was wäre dann die bessere Variante?

Innere Klassen:
Java:
ActionListener c = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//tu dies und das....				
			}
		};
		b3.addActionListener(c);


oder mit dieser if-Abfrage:
Java:
//Weiter oben im Code:
button1.setActionCommand("button1");
button2.setActionCommand("button2");
button3.setActionCommand("button3");

/....

public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equals("button1")) {
			//Tue dies bei Button1
		} else if (e.getActionCommand().equals("button2")) {
			//Tue dies bei Button2
		} else if (e.getActionCommand().equals("button3")) {
                       //Tue dies bei Button3
		}

	}
 

njans

Top Contributor
Genrell muss ich sagen, dass ich Variante 1 so schöner finde. Allerdings ist es ja meist so, dass du so evtl. sehr viel Code da in anonyme Klasse verpackst. Ich muss gestehen, dass ich dazu tendiere, sofern man eben Java 7 verwenden kann, variante 2 mit einem Switch zu verwenden und die einzelnen Aktionen, sofern ausreichen viel zu tun ist, in einzelne Methoden packe.
 
Zu viele if/else Anweisungen werden unübersichtlich und auch wenn man an der Eventquelle etwas verändern muss.

Innere Klassen sind normalerweise übersichtlicher und entsprichen mehr dem OO-Design.
 

njans

Top Contributor
Es sei denn man ist durch die Struktur des Projektes gebunden.
Z.B. sagt MVC da eigentlich an, den Listener von der Gui zu trennen.
 
V

vanny

Gast
Was spricht gegen eine richtige Klasse !?
Ich hab hier in letzter Zeit zu diesem Thema immer nur Anonyme Klasse, Innere Klasse und halt die Implementierung in this vorgefunden.
Ich persönlich mag es aber, eigene Klassen zu schreiben Bsp. FileActionListener o.ä. und diese dann halt zuzuweisen.

Bin ich da so auf dem Holzweg? :autsch:

gruß Vanny
 

njans

Top Contributor
Na MVC würde dir da vermutlich sogar Recht geben. Und in MVC würde ich die Listener auch in (eine) eigene Klasse/n auslagern.
 

Schandro

Top Contributor
Was spricht gegen eine richtige Klasse !?
Ich hab hier in letzter Zeit zu diesem Thema immer nur Anonyme Klasse, Innere Klasse und halt die Implementierung in this vorgefunden.
Ich persönlich mag es aber, eigene Klassen zu schreiben Bsp. FileActionListener o.ä. und diese dann halt zuzuweisen.

Bin ich da so auf dem Holzweg? :autsch:

gruß Vanny
Ich persönlich finde anonyme Klassen mit jeweils maximal ~5 Zeilen Code am schönsten, ansonsten in eine Methode auslagern. Der Code steht genau bei dem Element welches ihn benutzt, und du brauchst keine unsinnigen/nichtsaussagenden Klassennamen für jeden einzelnen Listener erfinden. Aber das gilt natürlich nur wenn man denselben Listener nicht für mehrere Elemente verwenden will.
 

bERt0r

Top Contributor
Das MVC Pattern besagt, dass ein Model, mehrere Views und ein Controller mehrere Views haben kann. Trygve/MVC
Leider ist das ganze 30 Jahre alt.
 
Zuletzt bearbeitet:

raGe666

Mitglied
ich erstell mir auch lieber ne eigene Klasse, zum einen, weil ich die ganzen blabla$1.class dateien hässlich finde, und zum anderen dann der Code zum erstellen vom GUI übersichtlicher ist, wenn man lediglich
Code:
button.addActionListener(...);
schreiben muss, als wenn man da dann auch noch die actionPerformed() definiert und so weiter.
Aber was mich interessiert, ist das euch nicht ein Störfaktor, wenn diese $1,2,3.class dateien im Verzeichnis rumschwirren, oder bekommt man die eh nicht mit, weil ihr zB. alles in ne .jar packt?
 

Schandro

Top Contributor
ich erstell mir auch lieber ne eigene Klasse, zum einen, weil ich die ganzen blabla$1.class dateien hässlich finde, und zum anderen dann der Code zum erstellen vom GUI übersichtlicher ist, wenn man lediglich
Code:
button.addActionListener(...);
schreiben muss, als wenn man da dann auch noch die actionPerformed() definiert und so weiter.
Aber was mich interessiert, ist das euch nicht ein Störfaktor, wenn diese $1,2,3.class dateien im Verzeichnis rumschwirren, oder bekommt man die eh nicht mit, weil ihr zB. alles in ne .jar packt?

Mit ner guten IDE und nem Deployment-Skript können dir die .class Dateien vollkommen egal sein, ich persönlich hab glaub ich seit einiger Zeit garkeine mehr gesehen :D

Mich würde mal interessieren wie du diese ganzen "nutzlosen" Klassen dann benennst?
 

raGe666

Mitglied
Mit ner guten IDE und nem Deployment-Skript können dir die .class Dateien vollkommen egal sein, ich persönlich hab glaub ich seit einiger Zeit garkeine mehr gesehen :D

Mich würde mal interessieren wie du diese ganzen "nutzlosen" Klassen dann benennst?

Ich tu dann natürlich au nicht für jeden Button eine eigene Klasse schreibn, sondern für eine Buttongruppe je einen und dann halt mit getSource() schon nochmal unterscheiden. Das ist zwar dann auch mit if oder switch, aber da hab ich dann keine ewig langen Abfragen. zB gibts bei mir dann einen MenuListener, der auf die Menubar und die start/pause/quit-Buttons aufpasst, und im Falle von zB. nem Memory-Spiel einen FieldListener, der auf die Karten im Spiel aufpasst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
C ActionListener AWT, Swing, JavaFX & SWT 6
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10
M Anonymer ActionListener AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4
S Swing mit ActionListener auf Objekte einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 3
G Swing Button ActionListener macht komische Sachen AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben