Netbeans Listener - Anonymous, inner class, main class?

membersound

Bekanntes Mitglied
Hallo,

bei Netbeans kann ich ja listener generation style einstellen: Anonymous, inner class, main class.

Einige verpönen den Gui Editor vielleicht sowieso, aber ich find ihn ganz praktisch, nimmt einem die nervigen Sachen schön ab. Aber meine Frage ist eigentlich unabhäbngig vom Editor:

Wollte einfach mal fragen, ob es generell egal ist, welchen Style man anwendet. Bzw wann man welchen wählen sollte, weil er ggf praktischer ist für verschiedene Aufgaben?
Bisher fand ich auch den Style mit Anonymous Listeners ganz gut, weil schön übersichtlich ohne jede Menge if-else Verzweigungen einer großen actionPerformed() Methode.

Aber schreibt doch mal :)
Danke
 

pl4gu33

Top Contributor
also falls du jetzt Unterschied Anonymous ActionListener Vs. eigene Klasse ActionListener meinst... würde ich sagen

Anonymous -> wenn die Funktion nur einmal gebraucht wird
Eigene ActionListener Klasse -> wenn du die selbe Funktion mehrmal brauchst :)
 

membersound

Bekanntes Mitglied
Ich hab das mal eben rauskopiert, um die Unterschiede besser zu sehen.
Ich frag mich eben, wann man was macht. Denn diese Unterschiede in Funktionalität gibt es wahrscheinlich ja, um verschiedene Sachen damit zu bezwecken?

Java:
//unterschiede bei netbeans zwischen den einzelnen listeners:

//anonymous:

        jButton1.setText("jButton1");
        jButton2.setText("jButton2");


        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

//----------------
//one inner class:

        jButton1.setText("jButton1");
        jButton1.addActionListener(formListener);

        jButton2.setText("jButton2");
        jButton2.addActionListener(formListener);


    private class FormListener implements java.awt.event.ActionListener {
        FormListener() {}
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            if (evt.getSource() == jButton1) {
                NewJFrame.this.jButton1ActionPerformed(evt);
            }
            else if (evt.getSource() == jButton2) {
                NewJFrame.this.jButton2ActionPerformed(evt);
            }
        }
    }


//--------------
//main class:

        jButton1.setText("jButton1");
        jButton1.addActionListener(this);

        jButton2.setText("jButton2");
        jButton2.addActionListener(this);

    public void actionPerformed(java.awt.event.ActionEvent evt) {
        if (evt.getSource() == jButton1) {
            NewJFrame.this.jButton1ActionPerformed(evt);
        }
        else if (evt.getSource() == jButton2) {
            NewJFrame.this.jButton2ActionPerformed(evt);
        }
    }
 

Landei

Top Contributor
Also ich finde die "anonymous"-Lösung mit Abstand am besten.

"one inner class" verstößt gegen das Single Responsibility Principle - und wozu habe ich die Möglichkeit, unterschiedliche Listener dranzuhängen, wenn ich dann doch einen Monsterlistener nehme, wo ich mir die richtige Aktion wieder rausfriemeln muss?

"main class" ist noch schlimmer, zum vorher Gesagten kommt noch hinzu, dass eine Klasse mit Interfaces dekoriert wird, die absolut nicht ihren Aufgaben entsprechen: Dass ein JFrame an irgendwelchen Buttons lauscht, ist ein Implementationsdetail, das nicht durch die API publiziert werden sollte (theoretisch könnte sogar irgendein Dödel versuchen, dein Fenster an seinen Buttons horchen zu lassen - absurd)

Oft ist die sauberste Lösung, [c]Action[/c]s (als anonyme Klassen) zu definieren: Die kann man [c]JButtons[/c], [c]JMenuItems[/c] u.s.w.schon im Konstruktor mitgeben, sie sind (ab Java 1.6) auch konsistent (wird ein Button disabled, ist es das Menü mit der gleichen Aktion auch). Keine Ahnung, ob man das bei NetBeans auch irgendwie einstellen kann.
 
Zuletzt bearbeitet:
B

bygones

Gast
bei dem gefrickel was der netbeans gui editor da erstellt ist es eigentlich ziemlich wurscht. Ob man zu schlechtem code etwas schlechtes, etwas mehr schlechter oder etwas besseres hinzufuegt is recht egal.

stimme Landei aber zu, die "mainclass" Loesung ist am schlimmsten, und wie auch schon gesagt wurde haengts von der Logik und der Wiederverwendung des Listeners ab, ob eine anonyme passend ist (wenig logik, keine wiederverwendbarkeit) oder man eine eigene Klasse erstellt (mehr logik und wiederverwendbarkeit)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Juelin Netbeans Anwendungsfilename Java Basics - Anfänger-Themen 1
Juelin Netbeans mit JavaFX, FXML und Scenebuilder Java Basics - Anfänger-Themen 11
Juelin Netbeans und javafx Java Basics - Anfänger-Themen 6
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I GUI über Eclipse oder NetBeans Java Basics - Anfänger-Themen 23
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
K Netbeans Deployment - lib in einziges jar integrieren Java Basics - Anfänger-Themen 2
M Erste Schritte NetBeans Fehlermeldung Java Basics - Anfänger-Themen 2
MiMa Klassen in Projekte wiederverwenden ?? (Netbeans IDE) Java Basics - Anfänger-Themen 8
Bluedaishi Netbeans Problem Java Basics - Anfänger-Themen 12
J Projekt nicht editierbar modifizieren (NetBeans 8) Java Basics - Anfänger-Themen 10
T Netbeans und Eclipse Probiere programmiere probiere Java Basics - Anfänger-Themen 2
M Netbeans Projekt lauffähig abspeichern Java Basics - Anfänger-Themen 3
M In Netbeans Programm so abspeichern dass es funktioniert Java Basics - Anfänger-Themen 8
W Fehler in der Entwicklungsumgebung NetBeans Java Basics - Anfänger-Themen 14
C Erste Schritte (Netbeans) no main classes found Java Basics - Anfänger-Themen 5
K Erste Schritte Netbeans Programm läuft nicht Java Basics - Anfänger-Themen 23
J Libraries in Netbeans Java Basics - Anfänger-Themen 5
G Java mit NetBeans Java Basics - Anfänger-Themen 5
B Netbeans Java Version 8.0.2 und Yosemite Java Basics - Anfänger-Themen 1
S Konsole Lanterna in NetBeans einbinden Java Basics - Anfänger-Themen 5
S Template Choosing "Primeface" in Netbeans 8.0.2 Java Basics - Anfänger-Themen 0
F Text anhand bestimmter Trennzeichen in Textteile trennen (netbeans) Java Basics - Anfänger-Themen 7
Lord.Djerun (Netbeans) Bei TimeUnit.Seconds,Sleep() hängt sich das komplette Programm auf.. Java Basics - Anfänger-Themen 8
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
P Problem mit Netbeans Java Basics - Anfänger-Themen 8
T Java Netbeans Grobrasterfilter Java Basics - Anfänger-Themen 0
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
F APP außerhalb von Netbeans starten Java Basics - Anfänger-Themen 2
D netbeans 7.3 fxapplication Java Basics - Anfänger-Themen 2
-horn- While Ausgabe Netbeans Java Basics - Anfänger-Themen 3
T NetBeans - Int in Textfield Java Basics - Anfänger-Themen 11
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
H [JAVA] NetBeans GUI Builder - Events Java Basics - Anfänger-Themen 10
M NetBeans Code Java Basics - Anfänger-Themen 12
T Classpath Klassen einbinden netbeans Java Basics - Anfänger-Themen 5
M Netbeans streicht Methodenbezeichner durch Java Basics - Anfänger-Themen 2
S ButtonKlick mit JFrame (Netbeans) fragen.. Java Basics - Anfänger-Themen 8
A Netbeans /Gamegrid hilfe!? Java Basics - Anfänger-Themen 17
T jTable - netbeans Java Basics - Anfänger-Themen 2
C jTable Netbeans Java Basics - Anfänger-Themen 3
M Netbeans ausführbare Jar erzeugen Java Basics - Anfänger-Themen 4
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
M In Netbeans kein Problem, im Terminal schon Java Basics - Anfänger-Themen 3
P Java Datei ohne Netbeans ausführen Java Basics - Anfänger-Themen 7
G NetBeans Contains files with errors Java Basics - Anfänger-Themen 14
F NetBeans Clear and Build löscht Dateien? Java Basics - Anfänger-Themen 5
I Netbeans - jTabbedPane Hintergrundfarbe ändern Java Basics - Anfänger-Themen 13
J Argumenten eingabe Netbeans Java Basics - Anfänger-Themen 5
R Netbeans hängt sich beim profilen auf Java Basics - Anfänger-Themen 4
O Build in Netbeans Java Basics - Anfänger-Themen 12
U Input/Output FileNotFoundException in Netbeans, in Eclipse nicht Java Basics - Anfänger-Themen 5
F Probleme nach dem Wechsel von Eclipse zu NetBeans Java Basics - Anfänger-Themen 15
S Erste Schritte HelloWorld in NetBeans Java Basics - Anfänger-Themen 8
B assert befehl in netbeans Java Basics - Anfänger-Themen 3
D Libarie und Javadoc in Netbeans einbinden? Java Basics - Anfänger-Themen 6
B Netbeans SQL Stmt Escapen Java Java Basics - Anfänger-Themen 9
MisterSeven Netbeans - Dropdown Menü erstellen? Java Basics - Anfänger-Themen 4
J Netbeans + JApplet-Form Java Basics - Anfänger-Themen 5
E Netbeans, "class does not have a main method" Java Basics - Anfänger-Themen 8
D Selbstprogrammierte Datein in Netbeans nutzen? Java Basics - Anfänger-Themen 2
J NetBeans-Projekt zu Datei? Java Basics - Anfänger-Themen 2
Hindi93 Netbeans Datei exportieren Java Basics - Anfänger-Themen 7
N NetBeans Projekt im Terminal starten Java Basics - Anfänger-Themen 2
C Netbeans will Plugin mangelns JDK nicht installieren ? Java Basics - Anfänger-Themen 2
N netbeans schaltfläche mit code belegen ? Java Basics - Anfänger-Themen 7
T Netbeans: Import von Externen Packet Java Basics - Anfänger-Themen 5
S Netbeans instalieren Java Basics - Anfänger-Themen 2
B Zeilenweises ausführen in NetBeans Java Basics - Anfänger-Themen 2
P Datentypen HTML Dokument speichern (Netbeans) Java Basics - Anfänger-Themen 10
N Anordnug der Komponenten mit NetBeans Java Basics - Anfänger-Themen 9
J Wie kann ich Netbeans in Eclipse integrieren? Java Basics - Anfänger-Themen 7
S Unterschiede Netbeans und .jar Java Basics - Anfänger-Themen 4
S NetBeans Project erstellen Java Basics - Anfänger-Themen 17
M netbeans exe Java Basics - Anfänger-Themen 5
S Programm erstellen (mit netbeans) Java Basics - Anfänger-Themen 15
B JAR Datei mit NetBeans erstellen und ausführen Java Basics - Anfänger-Themen 23
O Mit Netbeans .jar erstellen Java Basics - Anfänger-Themen 2
Spin GUI Builder in Netbeans Java Basics - Anfänger-Themen 3
C setResizable(false) unter NetBeans Java Basics - Anfänger-Themen 3
M netbeans GUI builder Java Basics - Anfänger-Themen 2
S Wo speichere ich Bilder für Applets (Netbeans) Java Basics - Anfänger-Themen 5
T MySQL-Dienst starten und stoppen aus Netbeans Java Basics - Anfänger-Themen 3
M package in Netbeans IDE Java Basics - Anfänger-Themen 3
D Eclipse und NetBeans Java Basics - Anfänger-Themen 3
J Programm läuft in Netbeans, aber nicht in der Konsole Java Basics - Anfänger-Themen 6
H Multiple JFrames im GUI Editor von NetBeans Java Basics - Anfänger-Themen 2
V Merkwürdiges Problem mit Netbeans und implements Java Basics - Anfänger-Themen 10
M Benutzer löschen mittels Netbeans Java Basics - Anfänger-Themen 4
M Klassendiagramm in Netbeans Java Basics - Anfänger-Themen 7
B Grafiken/Bilder mit Netbeans in Jdialog Java Basics - Anfänger-Themen 7
C Ein Handy Spiel programmieren mit Netbeans Java Basics - Anfänger-Themen 1
L wo muß die Jar stehen, Netbeans, Compile Java Basics - Anfänger-Themen 3
R Java Problem (mit NetBeans) - html gibt nur java logo aus Java Basics - Anfänger-Themen 7
G Netbeans: Klasse wird bei Run der Main Klasse nicht gefunden Java Basics - Anfänger-Themen 2
Spin Objekte in Netbeans Java Basics - Anfänger-Themen 6
T Netbeans 'Currency Converter' / DataInputStream readInt() Java Basics - Anfänger-Themen 2
B Netbeans Keypressed Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben