Dynamische JButtons mit ActionListener

Status
Nicht offen für weitere Antworten.

mororu

Mitglied
Hallo zusammen, ich habe folgendes Problem. Ich habe ein GUI mit einem Panel drauf. Der User kann nun in einem JTextField eine Anzahl angeben und erstellen drücken. Danach soll im Panel, die angegebene Anzahl Buttons erstellt werden. Soweit so gut. Das Problem, das ich nun habe ist, dass ich den ActionListener nicht zuweisen kann?!?
Habe mal zu Testzwecken folgendes programmiert:

Java:
public void createButtons(int count) {
for (int i = 0; i < x; i++) {
            JButton btn = new JButton("Hallo " + i);
            btn.addActionListener(this);
            pnlChooser.add(btn);
        }
}

public void actionPerformed(ActionEvent e) {
        System.out.println("Hallo");
        this.setButtonColor(0);
    }

In der Methode ActionPerformed möchte ich anschliessend prüfen welcher Button gedrückt ist. Je nach Button der gedrückt wurde, sollte dann die Methode setButtonColor(int) aufgerufen werden.

Jetzt gibt mir NetBeans aber immer eine Fehlermeldung an. Bei der Zeile btn.addActionListener(this), sagt er mir "es werde ein ActionListener erwartet und er habe ein Button gefunden". Das ist mir ja noch klar, aber bei allen Beispielen im Internet wird das so gemacht? Was ist denn hier das Problem?
 

petterson

Mitglied
Hallo!

Wenn ich dich richtig verstanden habe (und das Problem identifizieren kann), so musst du herausfinden, WELCHER Button den Event ausgelöst hat, oder?

Ich würde das so lösen (vorsicht, PSEUDOCODE, für etwas Anständiges reicht mein KnowHow noch nicht):
Die Knöpfe würde ich in ein Array oder in eine ArrayList packen.
Java:
public void actionPerformed(ActionEvent event){
Object dieQuelle = event.getSource();
[...]
if (dieQuelle == knopfListe[eintrag]){
    knopfListe[eintrag].setButtonColor(0);
}
 

mororu

Mitglied
Habe nun nochmals etwas versucht. Bin mir noch nicht sicher ob das so funktioniert. Vorallem ist die Prüfung, welcher Knopf gedrückt wurde, nicht sehr elegant :noe:.

Java:
final JButton btn = new JButton(""+(i+1));
            btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    int index = Integer.valueOf(btn.getText());
                    switch(index) {
                        case 1:
                            setButtonColor(0);
                            break;
                        case 2:
                            setButtonColor(1);
                            break;
                        case 3:
                            setButtonColor(2);
                            break;
                        case 4:
                            setButtonColor(3);
                            break;
                        case 5:
                            setButtonColor(4);
                            break;
                        case 6:
                            setButtonColor(5);
                            break;                            
                    }


                } 
            });
 
S

SlaterB

Gast
wie wärs mit

int index = Integer.valueOf(btn.getText());
setButtonColor(index-1);
 

mororu

Mitglied
Oh mann :lol:, da hatte ich aber nicht nur ein Brett, sondern einen ganzen Baumstamm vor der Stirn. Danke!
 

KrokoDiehl

Top Contributor
Ich behaupte mal für mich, dass ich es eleganter finde, wenn man statt den Button-Text sein Action-Command ausliest:
Java:
for (int i = 0; i < x; i++)
{
    JButton btn = new JButton("Hallo "+i);
    btn.addActionListener(this);
    btn.setActionCommant(""+i);
    panel.add(btn);
}

...
public void actionPerformed(ActionEvent event)
{
    String cmd   = event.getActionCommand();
    int    index = Integer.valueOf(cmd);
    //usw.
}

...aber das ist im Grunde Jacke wie Hose ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
L Dynamische Bindung Java Basics - Anfänger-Themen 3
W OOP Definition / Abgrenzung dynamische Bindung Java Basics - Anfänger-Themen 11
J Dynamische Datenstrukturen Java Basics - Anfänger-Themen 0
L Variablen Dynamische Variablenname Java Basics - Anfänger-Themen 9
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
M Schlüsselworte Dynamische Polymorhpie Java Basics - Anfänger-Themen 32
J OOP Dynamische Objektnamen Java Basics - Anfänger-Themen 6
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
F Erste Schritte Dynamische Variablen Java Basics - Anfänger-Themen 15
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
S Dynamische Variable ist? Java Basics - Anfänger-Themen 11
S Verwirrung - Dynamische Bindung greift nicht Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
P Klassen statische oder dynamische(?) Klasse Java Basics - Anfänger-Themen 3
J Dynamische Liste durchsuchen + anpassen Java Basics - Anfänger-Themen 3
A Schlüsselworte dynamische Stringteilung Java Basics - Anfänger-Themen 4
C Dynamische (AJAX) Inhalte einer Webseite mittels Java auslesen Java Basics - Anfänger-Themen 2
W Übungsaufgabe:Dynamische Datenstrukturen Java Basics - Anfänger-Themen 10
B dynamische erzeugung eines Objektes Java Basics - Anfänger-Themen 21
L Dynamische Objektgenerierung Java Basics - Anfänger-Themen 4
K Dynamische Bindungsregel Java Basics - Anfänger-Themen 2
B dynamische/statische Typen Java Basics - Anfänger-Themen 2
C dynamische JTextFields durchlaufen Java Basics - Anfänger-Themen 5
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
N OOP Dynamische Objekte und nach Parametern durchsuchen Java Basics - Anfänger-Themen 4
M dynamische JPanels/Component Java Basics - Anfänger-Themen 3
X dynamische Listen Java Basics - Anfänger-Themen 2
A Schnelle, dynamische, geordnete Datenstruktur? Java Basics - Anfänger-Themen 11
Y Kleine Verständnisfrage zum Thema dynamische Polymorphie Java Basics - Anfänger-Themen 3
C Dynamische Matrizen Java Basics - Anfänger-Themen 4
0 Dynamische Datenstruktur ohne Duplikate und mit direkter Elementauswahl Java Basics - Anfänger-Themen 3
N Vererbung/Dynamische Bindungen Java Basics - Anfänger-Themen 15
W Dynamische Bindung Java Basics - Anfänger-Themen 3
P jsp tags und scriplets mischen dynamische werte an jsp tag Java Basics - Anfänger-Themen 2
S Dynamische Tabelle Java Basics - Anfänger-Themen 2
P Suche Ersatz für dynamische arrays Java Basics - Anfänger-Themen 2
T Dynamische Reaktionen Java Basics - Anfänger-Themen 29
P Dynamische Bindung Java Basics - Anfänger-Themen 8
F Dynamische Speicheranpassung und exe Java Basics - Anfänger-Themen 9
D Dynamische Objektnamen / Variablen als Objektnamen verwenden Java Basics - Anfänger-Themen 3
J dynamische Auswahl einer überladenen Methode Java Basics - Anfänger-Themen 5
C JTable und dynamische Speicherung Java Basics - Anfänger-Themen 2
M Dynamische Wertsetzung von Variablen durch Eingaben Java Basics - Anfänger-Themen 9
J Dynamische Größenveränderung der Komponenten verhindern Java Basics - Anfänger-Themen 8
C Dynamische Operatoren! Java Basics - Anfänger-Themen 5
R dynamische Variablennamen Java Basics - Anfänger-Themen 3
M dynamische, assziative Arrays Java Basics - Anfänger-Themen 2
I dynamische mehrdimensionales Array Java Basics - Anfänger-Themen 8
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
H statische,dynamische Bindung Java Basics - Anfänger-Themen 4
0 Dynamische Speicherverwaltung Java Basics - Anfänger-Themen 4
B Dynamische If Anweisung Java Basics - Anfänger-Themen 13
B Dynamische Variable Java Basics - Anfänger-Themen 12
C Dynamische Arraygröße Java Basics - Anfänger-Themen 2
M dynamische tabellen Java Basics - Anfänger-Themen 2
G Java dynamische Arrays?? Java Basics - Anfänger-Themen 2
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6
T NullLayout und JButtons Java Basics - Anfänger-Themen 4
F Interface JButtons werden nicht angezeigt... Java Basics - Anfänger-Themen 5
S Jbuttons an Koordinaten Java Basics - Anfänger-Themen 33
M JButtons verschieben Java Basics - Anfänger-Themen 13
J Problem bei Param.übergabe und dem erstellen von JButtons Java Basics - Anfänger-Themen 4
N JButtons vergleichen Java Basics - Anfänger-Themen 3
L Platz auf JButtons verändern Java Basics - Anfänger-Themen 18
D java jbuttons auf dem Hintergrundbild Java Basics - Anfänger-Themen 11
E JButtons auf JFrame nicht immer sichtbar Java Basics - Anfänger-Themen 4
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
X Probleme mit JButtons Java Basics - Anfänger-Themen 6
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
D JTextField anstatt Jbuttons Java Basics - Anfänger-Themen 9
0 jButtons einen Int wert zuweisen MineSweaper Java Basics - Anfänger-Themen 3
P Wert eines JButtons Java Basics - Anfänger-Themen 6
R JButtons in eine Array legen GUI Java Basics - Anfänger-Themen 5
M JPanel, JButtons, Borderlayout Java Basics - Anfänger-Themen 8
Z JButtons & Actionlistener Java Basics - Anfänger-Themen 5
W Variable anzahl an JButtons Java Basics - Anfänger-Themen 5
A Problem mit einem Array aus JButtons Java Basics - Anfänger-Themen 4
K unbestimmte Anzahl JButtons Java Basics - Anfänger-Themen 2
H JButtons anpassen Java Basics - Anfänger-Themen 3
G Text des JButtons? Java Basics - Anfänger-Themen 2
J JButtons mit GridBagLayout anordnen Java Basics - Anfänger-Themen 9
J Rand eines JButtons entfernen Java Basics - Anfänger-Themen 3
M umbennenen eines JButtons Java Basics - Anfänger-Themen 2
G JButtons mit Rand Java Basics - Anfänger-Themen 3
M JButtons werden nicht angezeigt Java Basics - Anfänger-Themen 13
B Größe von JButtons Java Basics - Anfänger-Themen 2
R Buttons können sich bewegen und JButtons nicht? Java Basics - Anfänger-Themen 5
V Problem mit JButtons und JTextField Java Basics - Anfänger-Themen 5
C ActionEvent bei JButtons Java Basics - Anfänger-Themen 2
E ActionListener Java Basics - Anfänger-Themen 4
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
U HILFE! - per ActionListener Felder enablen....... Java Basics - Anfänger-Themen 5
C JButton reagiert nicht auf actionListener Java Basics - Anfänger-Themen 15
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
J Array Actionlistener Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben