En una parte de mi programa tengo una ventana con 5 botones que se comportan de la misma menera, pero su ImageIcon es diferente.
Código PHP:
private void setCartasJugador() {
cartasJugadorJButtons = new ArrayList();
for(int i=0; i<cartasJugador.size(); i++) {
Carta tmpCarta = (Carta) cartasJugador.get(i);
String nombre = tmpCarta.toString();
ImageIcon bgCarta = new ImageIcon("Imagenes/Cartas/" + nombre + ".png");
jbCarta = new JButton(bgCarta);
jbCarta.setVisible(true);
jbCarta.setBounds(setCartasJugadorPosicion(i));
setearAccionCartasJugador();
cartasJugadorJButtons.add(jbCarta);
}
}
Ahora tengo un problema al intentar setearle a los botones un ActionListener. Lo que estoy haciendo es recorriendo el ArrayList de JButtons y agregandole a cada uno la accion (la cual es la misma, cambiar el ImageIcon si se hace click en el).
Pero cuando le agrego la accion a los botones:
Código PHP:
private void setearAccionCartasJugador() {
jbCarta.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
ImageIcon bg = new ImageIcon("Imagenes/Cartas/back.png");
jbCarta.setIcon(bg);
}});
}
Y lo que me esta sucediendo, es que al hacer click en cualquiera de estos botones. El unico que cambia es el ultimo JButton que fue asignado a jbCarta.
Queria saber si hay una forma de hacer lo que quiero. Si existe algun tipo de funcion que me permita tomar el objeto al cual se le esta agregando el ActionListener. Algo similar a getParent() pero para esta situacion. Ya que si pongo "this" estoy haciendo referencia al ActionListener y no al boton.
Me gustaria ahorrarme el crear cada boton por separado.
Un saludo, y gracias!