Problem mit ActionListenern bei Buttons

Gurkolomäus

Mitglied
Wenn ich ein ButtonArray der Größe [8][8] habe, ist es möglich, für alle denselben ActionListener zu verwenden, und dabei trotzdem herauszufinden, welcher Button genau gedrückt wurde, sodass die Arraywerte des Buttons übergeben werden können? geht um ein mit Buttons umgesetztes UI für ein Schachprogramm.

Probiert habe ich es so:
Java:
    			   felder[i][j].addActionListener(new ActionListener(){
    				@Override
    				public void actionPerformed(ActionEvent e) {
    					for (int x = 0; x<8; x++){
    						for (int y = 0; y<8; y++){
    						if (e.getSource()==felder[x][y])
    							Execute(x,y);
    						}
    					}
    				}
    			   });
scheint aber nicht zu funktionieren, denn auch wenn es keinen Error ausspuckt, tut es einfach garnichts.

Vielen dank für jede Hilfe!
 
Ja, es geht mit getSource() von ActionEvent, aber die Methode gibt ein Object zurück, d.h., caste auf die entsprechende Button-Klasse. Beispiel mit JButton:
Java:
public void actionPerformed(ActionEvent e) {
    JButton b = (JButton)e.getSource();
}
 
ist es möglich, für alle denselben ActionListener zu verwenden, und dabei trotzdem herauszufinden,
Ja das ist möglich, mit getSource() kommst du an den Button der gedrückt wurde.

In deinem Codebeispiel erstellst du allerdings für jeden Button einen _neuen_ Actionlistener, die verwenden nicht den selben.
 
Java:
    			   felder[i][j].addActionListener(new MyActionListener(i,j));

class MyActionListener implements ActionListener{
  private int x,y;
  public MyActionListener(int x,int y){
    this.x=x;
    this.y=y;
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    Execute(x,y);    					
  }
}
 

Zurück
Oben