einzelner ActionListener vs anonyme ActionListener

Blender3D

Top Contributor
Bezug nehmend auf mein einfaches Test Programm habe ich es nun hinbekommen den leeren Graph im Panel anzuzeigen :)

Hier der Code:
[..., siehe #19]
3) Du erzeugst 2 ActionListener die den Listener dann an private Funktionen weiterleiten. Besser GraphPanel implementiert den ActionListener und du reagierst dort auf die Ereignisse. --> Viel übersichtlicher im Code.

Java:
    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == jBStart) {
            System.out.println("start");
        }

        if (source == jBExit) {
            System.out.println("exit");
        }
    }
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
3) Du erzeugst 2 ActionListener die den Listener dann an private Funktionen weiterleiten. Besser GraphPanel implementiert den ActionListener und du reagierst dort auf die Ereignisse. --> Viel übersichtlicher im Code.
Dieser Tipp ist aber Unsinn. Eine Methode pro Aktion ist deutlich besser, als eine Methode für alle Aktionen - völlig unabhängig, ob nun ActionListener oder sonstwas.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Habs mal abgespalten, da's mit dem anderem Thema nicht viel zu tun hat, aber ein ganz interessantes Thema ist...
 

mrBrown

Super-Moderator
Mitarbeiter
Dann schau Dir an welcher Code besser zu lesen ist.

Java:
    @Override
    public void actionPerformed(ActionEvent e) {
        Object source = e.getSource();
        if (source == jBStart) {
            System.out.println("start");
        }

        if (source == jBExit) {
            System.out.println("exit");
        }
    }

vs
Java:
private void jBStartActionPerformed(ActionEvent evt) {
     System.out.println("start");//Inhalt angepasst, damit das gleiche passiert
}

private void jBExitActionPerformed(ActionEvent evt) {
    System.out.println("exit");
}


Naja, sieht für mich ziemlich eindeutig aus...

* keine Verzweigung nötig (= Übersichtlicher)
* eine Methode pro Aktion (SRP...), bessere Benennung wäre aber durchaus möglich
* Buttons müssen keine Felder sein (= kleinerer Scope = weniger Fehlermöglichkeiten)
* kürzerer Code (wenn man das zu Methodenreferenzen kürzt, was jede gute IDE da macht) (für mich kein Argument, für viele aber schon)

Ich wüsste nicht, was für das implements ActionListener... spricht (was ja nebenbei auch noch den Typ der Klasse erweitert)?
 

Blender3D

Top Contributor
Naja, sieht für mich ziemlich eindeutig aus...
Java:
    // add Listeners
        jBStart.addActionListener(this);
        jBExit.addActionListener(this);
Java:
    jBStart.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        jBStartActionPerformed(evt);
                    }
                });
        jBExit.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        jBExitActionPerformed(evt);
                    }
                });
Also für mich sieht es nicht so aus. ;)
 

mrBrown

Super-Moderator
Mitarbeiter
Java:
    // add Listeners
        jBStart.addActionListener(this);
        jBExit.addActionListener(this);
Java:
    jBStart.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        jBStartActionPerformed(evt);
                    }
                });
        jBExit.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent evt) {
                        jBExitActionPerformed(evt);
                    }
                });
Also für mich sieht es nicht so aus. ;)
In dem einem Fall sehe ich direkt, was eigentlich gemacht wird, in dem anderen muss ich mich erst durch eine weitere Methode wühlen ;)

Aber wie schon gesagt: so gut wie jeder formt das zu Methodenreferenzen um (bzw, jede IDE macht das für einen), dann sieht es so aus:
Java:
jBStart.addActionListener(this::jBStartActionPerformed);
jBExit.addActionListener(this::jBExitActionPerformed);

In den meisten IDEs dürfte das sowieso schon als
Java:
jBExit.addActionListener(ActionListener(ActionEvent e) {jBExitActionPerformed(e)}
oder vergleichbar dargestellt sein.
 

mrBrown

Super-Moderator
Mitarbeiter
Ist Jigloo nicht nur ein Eclipse-Plugin? Eclipse sollte sowas eigentlich können, IntelliJ IDEA macht's aber auf jeden Fall
 

ralfb1105

Bekanntes Mitglied
Ja, richtig - Jigloo ist ein Eclipse Plugin. Ich werde mir bei Gelegenheit mal IntelliJ ansehen, aber erst einmal mit Eclipse und Jigloo weiter machen denn ich jabe ja mit Java schon genug Baustellen ;)

Gruß

Ralf
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
R Low-Res OCR einzelner Buchstaben und mehrstelliger Zahlen - Ideen gesucht AWT, Swing, JavaFX & SWT 2
P 2D-Grafik Gezielter Repaint einzelner Frames in Java-Game AWT, Swing, JavaFX & SWT 6
T Spaltengröße einzelner Spalten in Gridlayout festlegen AWT, Swing, JavaFX & SWT 3
M Swing JTable - Umsortieren einzelner Spalten unterbinden AWT, Swing, JavaFX & SWT 6
B Swing Drag&Drop einzelner Zellen in einer JTable AWT, Swing, JavaFX & SWT 12
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
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
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
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

Ähnliche Java Themen

Neue Themen


Oben