# JLabel mittles Schleife einbinden??



## Faulk (12. Jul 2010)

Hi zusammen ich bin noch neu hier und mache gleich mal meinen erstes Thema auf, ich hoffe es passt hier rein.

Ich bin gerade dabei ein Memory-Spiel zu schreiben das Konzept steht schon nur habe ich bei der Umsetzung ein Problem betreffend Swing...

Ich würde gerne die JLabel Objekte mittles einer Schleife einbinden, aber ich weiß nicht wie ich den Namen der Objekte einlesen kann als String klappt es scheinbar nicht..
Ich poste euch einfach mal die relevanten code-Ausschnitte, ich glaube dann ist mein Problem leiter ersichtlich 

Das sind die erstellten JLabel-Objekte

```
public JLabel card1 = new JLabel(ID1);
	public JLabel card2 = new JLabel(ID2);
	public JLabel card3 = new JLabel(ID3);
	public JLabel card4 = new JLabel(ID4);
	public JLabel card5 = new JLabel(ID5);
	public JLabel card6 = new JLabel(ID6);
	public JLabel card7 = new JLabel(ID7);
	public JLabel card8 = new JLabel(ID8);
	public JLabel card9 = new JLabel(ID9);
	public JLabel card10 = new JLabel(ID10);
	public JLabel card11 = new JLabel(ID1);
	public JLabel card12 = new JLabel(ID2);
	public JLabel card13 = new JLabel(ID3);
	public JLabel card14 = new JLabel(ID4);
	public JLabel card15 = new JLabel(ID5);
	public JLabel card16 = new JLabel(ID6);
	public JLabel card17 = new JLabel(ID7);
	public JLabel card18 = new JLabel(ID8);
	public JLabel card19 = new JLabel(ID9);
	public JLabel card20 = new JLabel(ID10);
```

so diese Objekte will ich jetzt mit Hilfe eines Array's in das Panel einbinden....
(ich hab mir das eig. so vorgestellt....)

```
int i=1;
	while(i<=20)
	{
	pan.add("card"+order[i]); //Der Array hatt 21(ich benutze das 0'te Feld nicht)Felder,
	i++;	                                 //und ist ein IntegerTyp und heißt order!
	}
```

ich erhalte dann folgende errormeldung beim ausführen:

Memory.java:128: cannot find symbol
symbol  : method add(java.lang.String)
location: class javax.swing.JPanel
        pan.add("card"+order_);
           ^
1 error

so das ist nun mein Problem,
ich weiß das es wahrscheinlich bessere und einfachere möglichkeiten gibt ein Memory zu realisieren(zb mit JComponent) aber zum einen mache ich es immer gern auf meine art und möchte gerne wissen wie ich ein solches Problem lösen kann und zum anderen kenne ich mich mit JComponent nicht wirklich aus und habe auf Anhieb keine gute erklärung zu dem objekt gefunden, und da ich mir alles selbst beibringe kann ich schlecht jemanden Fragen.
so jetzt habe ich schon genug geschrieben ich hoffe ihr kennt eine gute lösung für mein problem
danke im vorraus
grüße Faulk_


----------



## Gast2 (13. Jul 2010)

Du kannst deine Labels direkt als Array initialisieren:


```
JLabel[] labels = new JLabel[20]; // Label-Array der Größe 20

// Label müssen noch erstellt werden
for (int i = 0; i < labels.length; i++) {
     labels[i] = new JLabel("" + i);
}

// dem panel hinzufügen
for (int i : order) {
    pan.add(labels[i]);
}
```
So in etwa


----------



## Faulk (13. Jul 2010)

Danke für die superschnelle Antwort ich habe nur ein problem

Ich will auch in jedes Label ein Icon einfügen die ID1-ID20 benannt sind aber wenn ich den code entsprechened anpasse dann bekomme ich beim ausführen nur eine fehlermeldung

hier der code:

```
for (int i = 1; i < card.length; i++) {
        card[i] = new JLabel("ID" + i);    //versuch das icon einzubinden
        }
     for (int i : order) {
     pan.add(card[i]);
                         }
```

die error message:
Exception in thread "main" java.lang.NullPointerException
        at java.awt.Container.addImpl(Unknown Source)
        at java.awt.Container.add(Unknown Source)
        at Memory.<init>(Memory.java:139)
        at Memory.main(Memory.java:166)

weist du woran das liegt


----------



## Gast2 (13. Jul 2010)

```
new JLabel("ID" + i)
```
Wenn du das so nutzt dann schreibt er dir lediglich ID1, ID2, ... auf die Labels. Die Icons kannst du z.b. wieder in nen Array packen und in der Schleife dann auf das jeweilige icon zugreifen.


```
weist du woran das liegt
```
Der Fehler liegt in Zeile 139 in Memory.java. Dort ist irgendetwas null.


----------

