# Objektnamen aus String holen



## TimoTek (13. Dez 2012)

Hallo Forum,

ich möchte eine Reihe von JCheckBoxen erzeugen und zu einem JPanel hinzufügen. Um Code zu sparen habe ich mir das ganze folgendermaßen vorgestellt:


```
for(int i = 0; i <= 15; i++){
			
			String boxName = "kBox" + i;
			JCheckBox boxName = new JCheckBox();
			kickPanel.add(boxName);

}
```

Ich möchte also den Objektnamen aus eine String holen. Leider funktioniert das so nicht (was ich irgendwie schon vermutete habe ^^). Gibt's eine andere Möglichkeit oder einen Workaround dafür?

Vielen Dank im Voraus!


----------



## Schandro (13. Dez 2012)

Das geht so nicht in Java. Nimm ein Array oder ne List oder ...

http://www.java-forum.org/top-fragen/62032-fragen-variablennamen.html


----------



## tröööt (14. Dez 2012)

ich frage mich immer wieder wie leute darauf kommen ... denn dass das so unmöglich ist steht in jedem anfängerbuch im kapitel variablen ... oder zumindest sollte es dort zu finden sein ...

und auch mit reflections würde man so höchstens auf existierende variablen zugreifen können ... was aber leicht overkill ist ...


----------



## Bleiglanz (14. Dez 2012)

Du brauchst doch nur einen Verweis auf die Checkbox, für sowas gibts eine Standardlösung

```
java.util.Map<String,JCheckBox> boxListe = new java.util.HashMap<String, JCheckBox>();
    for(int i = 0; i <= 15; i++){
        String boxname = "kbox"+i;     
        boxListe.put(boxname,new JCheckBox());
        kickPanel.add(boxListe.get(boxname));
    }
```


----------



## Landei (14. Dez 2012)

tröööt hat gesagt.:


> ich frage mich immer wieder wie leute darauf kommen ...



Ganz einfach: Weil das in Skriptsprachen wie PHP gang und gäbe ist.


----------



## X5-599 (14. Dez 2012)

Wenn es sich nur um eine Identifizierungsmöglichkeit handelst, kann man bei allem was von Component erbt auch einfach die "setName(String)", "getName()" Methoden nutzen. Oder einfach individuelle ActionCommands setzen mit "setActionCommand(String)" und auswerten mit "getActionCommand()". Letzteres ist aber eher zur Auswertung in einem ActionListener vorgesehen.

Wenn natürlich daruf wahlfrei zugegriffen werden soll, muss man sich die Instanzen zusätzlich in einer Liste halten.
Oder wie auch schon gesagt in einer Map mit dem Namen, den das Objekt haben soll als Key und dem Objekt selber als Value. Dann erübrigt sich die ganze oben genannte setName() Geschichte...


----------



## TimoTek (14. Dez 2012)

tröööt hat gesagt.:


> denn dass das so unmöglich ist steht in jedem anfängerbuch im kapitel variablen



Wenn ich mich recht entsinne, ist das hier das Anfänger-Board.

@ X5-599 und Bleiglanz: Vielen Dank, das hat mir sehr geholfen!


----------



## SlaterB (14. Dez 2012)

> Wenn ich mich recht entsinne, ist das hier das Anfänger-Board.

eine Deutsch-Nachhilfe, zumal kostenlos, würde auch was husten wenn nach der Bedeutung von A, B, C gefragt wird,
Anfänger-Board ist keine Ausrede für beliebige Fragen, 
also man kann sie stellen, aber dann auch Kritik akzeptieren,

wobei diese Frage nicht ganz darunter zählt, eher ein gedanklicher Sonderfall, 
der in Büchern nicht genau genug behandelt bzw. leicht unbeachtet bleiben kann obwohl ganz Java drankommt


----------



## Crian (14. Dez 2012)

Eine 
	
	
	
	





```
Map<String, JCheckBox>
```
 ginge da theoretisch auch, wenn es auch keine "schöne" Lösung wäre. Immerhin lässt sich auf dem Wege "Strings als Indices" Checkboxen zuordnen.


----------

