Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/06/2009, 10:42
Squar
 
Fecha de Ingreso: abril-2009
Mensajes: 82
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: JButtons en un ArrayList

Buenas:

El problema reside en que tu jbCarta cambia con el tiempo, con lo cual siempre al final del bucle se queda con la dirección del último botón como tu muy bien dices. Si lo que quieres es pasar el botón, hazlo como parámetro al constructor, es decir, algo como:

Código:
public class MyActionListener implements ActionListener {

    private JButton jbCarta;

    public MyActionListener(JButton jbCarta) {
        this.jbCarta = jbCarta;
    }

    public void actionPerformed(ActionEvent e) {
        ImageIcon bg = new ImageIcon("Imagenes/Cartas/back.png");
        this.jbCarta.setIcon(bg);
    }

}
Obviamente, para hacer esto, tienes que crear la clase MyActionListener como una clase independiente. Y tendrás que asignarlo adecuadamente, claro:

Código:
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));
            jbCarta.addActionListener(jbCarta);
            cartasJugadorJButtons.add(jbCarta);
        }
}
Saludos