Foro sobre Java SE > duda con ArrayList de ImageIcon
salio cortado el ultimo codigo, aqui entero:
int i = new Random().nextInt(imagenes1.size()); //creo un indice aleatorio para recorrer el ArrayList
for (i = 0; i
parece que no quiere salir...
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);
Si no he entendido mal, la cuestión es ordenar de manera aleatoria las imágenes de la lista, cada vez que se precisa agregarlas a los botones.
Si es el caso, lo más sencillo es:
1.- Crear una copia de la lista original
2.- Usar el método shuffle de la clase Collections.
List<ImageIcon> nuevaLista= new ArrayList<>(imagenes1);
Collections.shuffle(nuevaLista);
Las imágenes estarán "desordenadas" aleatoriamente en nuevaLista.
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#shuffle(java.util.List)
muchisimas gracias por tu respuesta, voy a probar :)
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:
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:
int i = new Random().nextInt(imagenes1.size()); //creo un indice aleatorio para recorrer el ArrayList
for (i = 0; i