JLabels dynamisch erstellen

Daywalker2004

Grünschnabel
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.
 
Moin!
Nein das geht so nicht.
Aber speichere deine Labels doch in einer HashMap und nimm die fortlaufende Nummer als Key..

*grüssle*
MeinerEiner
 
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
 
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.
 
Moin!
Ja, dadurch dass du es in einer von den genannten Datenstrukturen abspeicherst, kannst du sie auch eindeutig ansprechen:
Bsp:
Code:
            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
 
Zuletzt bearbeitet von einem Moderator:
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?
 
Zuletzt bearbeitet:
Java:
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?
 
Zurück