# NetBeans und der ActionListener



## MichaelR (27. Mai 2009)

Hallo zusammen,

ich versuche grad mit Netbeans zu programmieren, weil es die Vorgabe für eine Studienarbeit ist. Kurz zum Programm, es soll ein einfaches Quiz werden mit der Möglichkeit die Antworten über 4 Buttons zu wählen.

Die Gui an sich ist schön mit dem GUI Builder gemacht worden, aber leider kann ich die Buttons nachträglich nicht mehr bearbeiten. Ich möchte für alle Buttons einen ActionListener machen. Ich kann zwar über den GUI Builder jeweils einen ActionListener zuordnen, sehe aber den Quelltext nicht. Ich will ja wie gesagt für jeden Button den gleichen. Habe im Forum geschaut und den Rat bekommen dies über die Optionen zu ändern, was aber Netbeans anscheinend nicht stört, er macht munter weiter für jeden Button einen neue ActionPerformed Methode zu erstellen.


Wie war des nochmal mit dem Quelltext Tag?

Es schaut dann ungefähr so aus und lässt sich danach nicht mehr verändern:


  private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }


    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration


----------



## MichaelR (27. Mai 2009)

Ja, ich hab grad gesehen, dass man ja auch ganz normal auf die Buttons zugreifen kann.
Also mit der .addActionListener, oder .setBackgroundColor.
Aber wär trptzdem noch interessant, wo der automatisch generierte Quellcode steht, damit man den noch bearbeiten kann.


----------



## André Uhres (27. Mai 2009)

Gui Builder konfiguieren:
"Design" Modus | "Inspector" Fenster | Rechtsklick auf den "Form"-Knoten | "Properties" | "Listener Generation Style"

Der generierte Code befindet sich in der Methode "initComponents" (im Quellcode den editor-fold "+Generated Code" aufklappen). Den generierten Code kann man im Design Modus über die Properties bearbeiten.

Btw, das NetBeans "Help" Menü bietet reichlich Infos zur Benutzung der IDE.


----------



## MichaelR (28. Mai 2009)

Vielen Dank erstmal für den Hinweis mit dem ActionListener. Aber irgendwie klappt des immer noch nicht so richtig. Ich kann zwar den Typ des ActionListeners umstellen, aber selbst wenn ich des änder macht er mir fröhlich weiter für jeden Button einen ActionPerformed Methode. ich will eigentlich nur eine einzige haben und diesen mehren Buttons zuweisen(One Inner Class?). Naja, ich werd halt einfach eine ActionPErformed Methode ausfüllen und dann die andern diese Methode aufrufen lassen, oder eine seperarte Methode machen,die von jeder ActionPerformed aufgerufen werden. 
Ich kann mir aber den Quellcode der einzelnen Buttons anschauen, wenn ich auf Customize Code gehe und diesen verändern,aber kann einfach nicht den ActionListener gewaltsam ändern.

Naja, ich fluch einfach noch ein bisschen über Netbeans und bedauere, dass man nicht eclipse verwenden darf;-)

Danke für die schnelle Antwort


----------



## Stefan S. (28. Mai 2009)

MichaelR hat gesagt.:


> Naja, ich fluch einfach noch ein bisschen über Netbeans und bedauere, dass man nicht eclipse verwenden darf



Was kann Netbeans dafür, wenn du nichtmal trivialste Dinge selbst bewerkstelligen kannst und die Hilfe dich überfordert?

Als ob es nun so schwer wäre für 4 Buttons denselben Listener einzutragen. 

Manche Leute bekommen ohne GUI-Builder heute nichtmal mehr einen JButton auf das Pane. Das ist traurig Freunde... ;(


----------



## André Uhres (28. Mai 2009)

MichaelR hat gesagt.:


> Aber irgendwie klappt des immer noch nicht so richtig.


Ohne Design Modus können wir auch einfach "implements ActionListener" schreiben:

```
public class NewJFrame extends JFrame implements ActionListener {
```
und dann folgende Methode einführen:

```
public void actionPerformed(ActionEvent evt) {
        if (evt.getSource() == jButton1) {
            //...
        } else if (evt.getSource() == jButton2) {
            //...
        }
    }
```
Dann müssen wir lediglich noch den Listener registrieren:

```
jButton1.addActionListener(this);
jButton2.addActionListener(this);
```


----------

