# JLabels dynamisch erstellen



## Daywalker2004 (19. März 2007)

Hallo,

ich habe ein Problem und zwar, ich möchte JLabels dynamisch generieren. Das soll heißen ich will n-Mal ein JLabel erstellen lassen und jedes JLabel soll als Name eine laufende Nummer sein. 

Beispiel (5 JLabels sollen automatisch erstellt werden)

JLabel1
JLabel2
JLabel3
JLabel4
JLabel5

Ist das möglich. Ich hätte gerne eine Methode, der man einfach den gewünschten Namen übergibt und dann wird das JLabel mit diesem Namen angelegt.


----------



## MeinerEiner_80 (19. März 2007)

Moin!
Nein das geht so nicht.
Aber speichere deine Labels doch in einer HashMap und nimm die fortlaufende Nummer als Key..

*grüssle*
MeinerEiner


----------



## zerix (19. März 2007)

Du kannst die JLabels auch in einer ArrayList oder einem Vector abspeichern.

Du kannst die eine Methode schreiben, die dir immer eine Instance von einem JLabel zurück gibt, aber da kannst du halt nicht sagen wie die Variable heißt in der es abgespeichert werden soll, wenn du es dynamisch machen willst.


MFG zerix


----------



## Daywalker2004 (19. März 2007)

Schonmal danke für die schnellen Antworten.

Bin leider noch nicht so Java erprobt. Hättet ihr vllt ein Beispiel? 

@MeinerEiner Wenn ich die Labels in einer HashMap speichere haben die dann alle einen anderen Namen? Oder sind die dann durch den Key eindeutig identifizierbar? Ich müsste jedes erstellte JLabel ansprechen können und deren Text ändern können.


----------



## MeinerEiner_80 (19. März 2007)

Moin!
Ja, dadurch dass du es in einer von den genannten Datenstrukturen abspeicherst, kannst du sie auch eindeutig ansprechen:
Bsp:

```
HashMap<Integer,JLabel> map = new HashMap<Integer,JLabel>();
            Vector<JLabel> vec = new Vector<JLabel>();
            for(int i=0; i < 5; i++){
               JLabel label = new JLabel("Label nr:= "+i);
               map.put(i, label);
               vec.add(label);
            }
            
            System.out.println(map.get(2).getText());
            map.get(2).setText("new Label text:= 2");
            System.out.println(map.get(2).getText());
            
            System.out.println(vec.get(3).getText());
```

Ausgabe:


> Label nr:= 2
> new Label text:= 2
> Label nr:= 3



*grüssle*
MeinerEiner


----------



## Daywalker2004 (19. März 2007)

vielen dank  werd ich gleich mal ausprobieren

noch ne frage *schäm*  was muss ich den zu meinem JFrame adden, damit ich die Labels auch sehe? Oder steh ich grad aufn Schlauch und geh da ganz falsch ran?


----------



## zeja (19. März 2007)

```
jFrame.getContentPane.add(label)
```

hast du gemacht?

Hat deine ContentPane ein Layout und fügst du das Label dem Layout entsprechend mit den passenden Constraints hinzu?


----------

