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
david
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);
david
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)
choces
muchisimas gracias por tu respuesta, voy a probar :)
david

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