Variable als JFrame Name
Java Programmierer
- java
Hallo, ich will in einer Schleife JLabels erzeugen, aber
natürlich müssen die alle einen anderen Namen haben. Deswegen
will ich eine Variabla als Framenamen eingeben, undzwar so:
int zahl = 0;
String name = "";
while(zahl =! 20){
name = String.valueOf(zahl);
Jlabel name = new JLabel("xy");
zahl++;
}
Leider wird wohl keine Variable als JLabel name akzeptiert. Wie macht man es denn richtig? (das ist nur ein kleiner Code-Ausschnitt, d.h. die Importe etc passem)
Danke für Antworten im voraus
Tach,
ich will in einer Schleife JLabels erzeugen, aber
natürlich müssen die alle einen anderen Namen haben. Deswegen
will ich eine Variabla als Framenamen eingeben, [...]
Leider wird wohl keine Variable als JLabel name akzeptiert. Wie macht man es denn richtig?
statt variabler Variablennamen verwendet man ein passendes Collectible, z.B.
List<Jlabel> labels = new ArrayList<Jlabel>();
for(int i=0;i<20;i++){
labels.add(new JLabel("xy"));
}
mfg
Woodfighter
Tach,
statt variabler Variablennamen verwendet man ein passendes Collectible, z.B.
List<Jlabel> labels = new ArrayList<Jlabel>();
for(int i=0;i<20;i++){
labels.add(new JLabel("xy"));
}
>
> mfg
> Woodfighter
Hi,
du hast mich falsch verstanden. Mein Programmablauf schaut so aus:
~~~javascript
int zahl = 0;
String name = "";
while(zahl =! 20){
name = String.valueOf(zahl);
Jlabel name = new JLabel("xy");
zahl++;
}
Wie man sieht habe ich eine Variable zahl, die mit 0 beginnt. In einer Schleife wird sie so lange hochezählt, bis 20 erreicht wurde.
In der Schleife bekommt ein String den Wert dieser Zahl, also im ersten durchlauf 0. Danach wird ein JLabel definiert, der den Namen des Strings name haben soll, welcher eine zeile davor den wert des Integers zahl erhalten hat. Somit würde der erste JFrame 0 heissen und der letzte 20.
Leider weiss ich nicht, wie die Syntax dafür ist, um einem JFrame eine Variable als Namen zuzuweisen.
Tach,
du hast mich falsch verstanden.
nein, du mich; ich weiß was dein Code tut.
Wie man sieht habe ich eine Variable zahl, die mit 0 beginnt. In einer Schleife wird sie so lange hochezählt, bis 20 erreicht wurde.
ja, warum du für eine Zählschleife while und nicht for verwendest, verstehe ich zwar nicht, aber das hatte ich in meinem Code ja korrigiert.
In der Schleife bekommt ein String den Wert dieser Zahl, also im ersten durchlauf 0. Danach wird ein JLabel definiert, der den Namen des Strings name haben soll, welcher eine zeile davor den wert des Integers zahl erhalten hat. Somit würde der erste JFrame 0 heissen und der letzte 20.
1. Java-Bezeichner können nicht mit einer Ziffer beginnen.
2. Variable Variablennamen deuten darauf hin, dass der Programmierer etwas falsches tut.
3. Du möchtest _wirklich_ ein Collectible/Array/Liste/Set… mit JLabels haben.
4. Vermutlich möchtest du statt "xy" einen von i abhängigen String zuweisen.
Leider weiss ich nicht, wie die Syntax dafür ist, um einem JFrame eine Variable als Namen zuzuweisen.
Der Name des JFrames hat nichts mit dem Variablennamen des JLabels zu tun, sondern ausschließlich mit dem Inhalt des JLabels, die werden in deinem Beispiel allerdings alle auf "xy" gesetzt und sollten wohl eher von i abhängig sein.
Du hast dann eine Liste von 20 JLabels mit denen du dann weiterarbeiten kannst (einfacher wäre es vermutlich gleich alles in der Schleife zu erledigen.)
mfg
Woodfighter
Hi,
while(zahl =! 20){
Diesen Operator gibt es nicht.
name = String.valueOf(zahl);
Jlabel name = new JLabel("xy");
Jlabel gibt es auch nicht (im Gegensatz zu JLabel).
Und Du hast bereits in diesem Scope eine Variable mit Namen "name" - da kannst Du keine zweite anlegen.
Und was Du vermutlich eigentlich machen willst: eine Variable vom Typ JLabel mit dem Namen "1" geht auch nicht. Denn eine Ziffer darf eh nicht am Namensanfang einer Variable stehen.
Was Du eventuell machen könntest:
Du legst vor der Schleife ein Array von JLabel an:
JLabel[] labels = new JLabel[20];
Und dann in der Schleife:
labels[zahl] = new JLabel("xy");
cu,
Andreas