duda con ArrayList de ImageIcon

Responder
Mensaje
Autor
davidjah
Mensajes: 20
Registrado: 05/10/2012 8:02 am

duda con ArrayList de ImageIcon

#1 Mensaje por davidjah » 20/11/2014 1:58 am

hola buenas, estoy realizando un puzzle en java swing y tengo que añadir a 9 JButton 9 ImageIcon almacenadas en un ArrayList, el problema que tengo es al pasarle dichas imagenes a dichos botones deberia de eliminarme el indice del ImageIcon para no repetirse la misma imagen, ya que las imagenes no pueden estar repetidas (obviamente).
Os paso el codigo que tengo para daros una referencia, a ver si podeis solucionarmelo.
Gracias de antemano y un saludo!

CODIGO DEL ARRAYLIST:

Código: Seleccionar todo


private ArrayList<ImageIcon> imagenes1 = new ArrayList();

       imagenes1.add(v.getIb11());
       imagenes1.add(v.getIb11());
       imagenes1.add(v.getIb12());
       imagenes1.add(v.getIb13());
       imagenes1.add(v.getIb14());
       imagenes1.add(v.getIb15());
       imagenes1.add(v.getIb16());
       imagenes1.add(v.getIb17());
       imagenes1.add(v.getIb18());
       imagenes1.add(v.getIb19());
getIbXX(); son metodos que llaman a los distintos ImageICon los cuales tengo definidos en otra clase que llamo mediante el objeto v perteneciente a esa clase.

CARGA DE IMAGENES DEL ARRAYLIST EN LOS BOTONES:

Código: Seleccionar todo

int i = new Random().nextInt(imagenes1.size()); //creo un indice aleatorio para recorrer el ArrayList
                    
                    for (i = 0; i < imagenes1.size(); i++) {        //con este for recorro el arraylist              
                        
                        ImageIcon imagen = imagenes1.get(i);        //saco la imagen asignada a ese indice
                        v.getBtn1().setIcon(imagen);                //le asigno la imagen adquirida al primer boton
                    }
                        imagenes1.remove(i);                        //elimino el indice para que no se repita la imagen
                        
                        for (i = 0; i < imagenes1.size(); i++) {                     
                        
                        ImageIcon imagen = imagenes1.get(i);       
                        v.getBtn2().setIcon(imagen);             
                    }
                        imagenes1.remove(i);                       
                        
                        for (i = 0; i < imagenes1.size(); i++) {        
                        
                        ImageIcon imagen = imagenes1.get(i);      
                        v.getBtn3().setIcon(imagen);                
                    }
                        imagenes1.remove(i);                       
                        
                        for (i = 0; i < imagenes1.size(); i++) {              
                        
                        ImageIcon imagen = imagenes1.get(i);       
                        v.getBtn4().setIcon(imagen);               
                    }
                        imagenes1.remove(i);       
                        
                        for (i = 0; i < imagenes1.size(); i++) {       
                        
                        ImageIcon imagen = imagenes1.get(i);    
                        v.getBtn5().setIcon(imagen);            
                    }
                        imagenes1.remove(i);                   
                        
                        for (i = 0; i < imagenes1.size(); i++) {   
                        
                        ImageIcon imagen = imagenes1.get(i); 
                        v.getBtn6().setIcon(imagen);           
                    }
                        imagenes1.remove(i);               
                        
                        for (i = 0; i < imagenes1.size(); i++) {            
                        
                        ImageIcon imagen = imagenes1.get(i);     
                        v.getBtn7().setIcon(imagen);              
                    }
                        imagenes1.remove(i);                    
                        
                        for (i = 0; i < imagenes1.size(); i++) {                     
                        
                        ImageIcon imagen = imagenes1.get(i);        
                        v.getBtn8().setIcon(imagen);                
                    }
                        imagenes1.remove(i);                        
                        
                        for (i = 0; i < imagenes1.size(); i++) {                     
                        
                        ImageIcon imagen = imagenes1.get(i);        
                        v.getBtn9().setIcon(imagen);                
                    }
                        imagenes1.remove(i);   

polly
Mensajes: 619
Registrado: 19/07/2007 3:42 pm
Ubicación: Valladolid (Spain)
Contactar:

#2 Mensaje por polly » 22/11/2014 5:27 am

Hola. Suponiendo que lo que intentas hacer es asignar a tus distintos botones imágenes aleatorias entonces creo que te bastaría con lo siguiente:

1. Desordena el array de imágenes.
2. Asigna ordenadamente tus imágenes a tus botones.

Pseudocódigo:

Código: Seleccionar todo

    desordenar(imagenes1);
    v.getBtn1().setIcon(imagenes.get(0));    
    v.getBtn2().setIcon(imagenes.get(1));
    v.getBtn3().setIcon(imagenes.get(2));
    ...
Como ves, convendría tener un array de botones también de modo que pudieras hacer algo como esto:

Código: Seleccionar todo

    desordenar(imagenes1);
    for (int i = 0, size = imagenes.size(); i < size; i++) {
        v.getBtn(i).setIcon(imagenes.get(i));
    }
El algoritmo para desordenar lo puedes encontrar fácil buscando en interneeeeet.[/code]
enrmarc

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados