# Bilder in Array zufällig anordnen



## HansK (7. Jun 2011)

Hallo,
ich möchte Bilder, welche ich einem Array zugefügt habe, nochmal mischen lassen!


```
final  JButton[] arrayMitButtons = new JButton[10];
              for (int i = 1; i < arrayMitButtons.length; i++) {
              String index = String.valueOf(i);
              ImageIcon image = new ImageIcon("C:\\berg" + index + index + ".jpg");
              arrayMitButtons[i] = new JButton(image);
              add(arrayMitButtons[i]);
              arrayMitButtons[i].setVisible(false);
              }
```

Jetzt gibt es die shuffle option über die Collections, aber ich bin echt schon dran verzweifelt..
Müsste ja irgendwie funktionieren wenn ich mir eine Liste erstelle und die dann auch durchwürfeln lasse oder? Ich brauche dringenst ein Coding Beispiel da ich bei Überlegungen schon nicht mehr alleine weiterkomme.

Ein Beispiel

```
// Create a list
List list = new ArrayList();

// Add elements to list

// Shuffle the elements in the list
Collections.shuffle(list);

// Create an array
String[] array = new String[]{"a", "b", "c"};

// Shuffle the elements in the array
Collections.shuffle(Arrays.asList(array));
```

aber keine Ahnung wie ich das umsetzen soll da ich meine Bilder welche später eingefügt werden ja per Schleife erzeugt werden und ich nicht weiß wie das mit der Liste funktionieren soll..

Grüße, 
Hans


----------



## Michael... (7. Jun 2011)

Warum nicht gleich die Objekte in einer Liste verwalten?

```
ArrayList<ImageIcon> imgList = ArrayList<ImageIcon>();
for (int i=0; i...)
    imgList.add(new ImageIcon(...);
Collections.shuffle(imgList);
```
Die Button Erzeugung bzw. die Zuweisung mittels setIcon(...) darf/kann natürlich erst nach dem Mischen erfolgen.


----------



## eRaaaa (7. Jun 2011)

Mhm?
Geht doch genauso :bahnhof:

```
List<JButton> list = Arrays.asList(arrayMitButtons);
		Collections.shuffle(list);
		arrayMitButtons = list.toArray(new JButton[0]);
```

so müßte dann natürlich das final noch weg.... Oder eben selbst eine shuffle Methode schreiben für das Array, ist ja nicht so schwer, einfach Zufallszahlen ziehen und tauschen....


----------



## HansK (7. Jun 2011)

@Michael..


```
ArrayList<ImageIcon> imgList = ArrayList<ImageIcon>();
              for (int i=0; i<imgList.length;i++){
              imgList.add(new ImageIcon("C:\\berg" + index + index + ".jpg");
              Collections.shuffle(imgList);
              }
```

ungefähr so?? 
wie soll ich denn dann die bilder in ein gridlayout einfügen wenn die bilder keinen "namen" haben??
soll das zuweisen dann außerhalb der schleife sein??

Gruß


----------



## Michael... (7. Jun 2011)

Wozu brauchen sie einen "Namen"? Im ersten Post waren sie ja sogar nur durch eine in der Schleife gültige Variable referenziert?
An die Bilder kommt man ja mit 
	
	
	
	





```
imgList.get(index)
```


----------

