Dynamisch erzeugten Buttons Methoden zuweisen

Infoopfer

Neues Mitglied
Hoi!

Wie weise ich mehreren dynamisch erzeugten Buttons, die über einen anderen Button erzeugt werden, eine Methode zu, die sie beim anklicken auslösen?
Es können beliebig viele Buttons erzeugt werden und alle sollen die selbe Funktion auslösen, wäre aber schön (aber nicht nötig) wenn man erkennen kann, welcher Button ausgelöst wurde.

Java:
for(int i = 1; i <=27; i++){

         JButton button1 = new JButton(CaptionArray[i]);
         ArrayofJButton[i] = button1;
         add(button1);

         if (j<9){
           button1.setBounds(j*50, t, 50, 30);
           j++;
         }
         else{
           t = t+30;
           j = 0;
           button1.setBounds(j*50, t , 50, 30);
           j++;
         }
         }

Ausgelöst werden soll:

Java:
public void wasderButtontunsoll(){
 (............................)
}
 
über die Source des ActionEvents kommst du dann an den JButton,
ein Vergleich mit dem Array könnte den Index bestimmen
 
Jedes Mal, wenn du einen neuen Button hinzufügst, gibst du diesem auch deinen ActionListener mit (
Code:
JButton#addActionListener(ActionListener)
). In der
Code:
actionPerformed
desselben kannst du dann, wie SlaterB schon sagte, mit
Code:
Event#getSource()
prüfen, wer für die Action verantwortlich war.
 
Zuletzt bearbeitet:
Java:
public void actionPerformed(ActionEvent e) {
    
    JButton button = (JButton) e.getSource()

    .....
}

So bekommst du dann den Button.
 
wie wäre es z.b. mit dem sog. ActionCommand ... das ist ein string welchen man dann im zugewiesenden ActionListener prüfen kann *so kann man z.b. auch daten mitgeben* ..

bei buttons ist das ActionCommand der button-text falls nicht explizit gesetzt
 
setze unter die Zeilen mit setBounds noch ein
.setActionCommand
.setActionListener
du kanst dir ja mal beide auf ser System.output.Print ausgeben lassen um den unterschied zu sehen was beide zurückliefern
 

Zurück
Oben