Medien & Phantastik > Multimedia - Software & Betriebsysteme

[Java] In Schleife verschieden Labels 'beschriften'

<< < (3/3)

Imion:
in meinem Originalcode stand

--- Code: ---OrbitLabel.setText(""+orbits[i]);
--- Ende Code ---

hier wollte ich, dass sich die Label je nach 'i-Stand' verändern.
Also die Variable orbits[0] in OrbitLabel0, die Variable orbits[1] in OrbitsLabel1 usw. ausgegeben wird.
(Bei OrbitLabel0 usw. handelt es sich um Labels, die auf der GUI schon vorhanden sind, und ihrer Füllung mit Text harren.)

Erst bei Zero ist es zum


--- Zitat von: Zero am  4.08.2007 | 20:03 ---
--- Code: ---
                orbitlabelarray[i] = (new OrbitLabel()).setText(""+orbits[i]);         

--- Ende Code ---

--- Ende Zitat ---

geworden.

avakar:
Dann solltest du die OrbitLabels erstmal in ein Array stecken. Etwa so

--- Code: ---List theLabels = new ArrayList(13);
theLabels.add(0, OrbitLabel0);
theLabels.add(1, OrbitLabel1);
    ...
theLabels.add(12, OrbitLabel12);

--- Ende Code ---

Danach kannst du in einer Schleife die Labels mit dem Text versehen, etwa so

--- Code: ---for (int i=0; i<13; i++) {
    // berechne hier irgendwas

    ((JLabel) theLabels.get(i)).setText(String.valueOf(orbits[i]));
}

--- Ende Code ---


--- Code: ---OrbitLabel.setText(""+orbits[i]);
--- Ende Code ---
sieht übrigens nach einer Klassen- oder Objektmethode aus, daher ging Zero wohl davon aus, dass es OrbitLabel eine Klasse ist.

Imion:

--- Zitat von: avakar am  4.08.2007 | 21:23 ---(...)

--- Ende Zitat ---

Juchu, so klappts. Danke Dir!

Zero:

--- Zitat ---
--- Code: ---OrbitLabel.setText(""+orbits[i]);
--- Ende Code ---
sieht übrigens nach einer Klassen- oder Objektmethode aus, daher ging Zero wohl davon aus, dass es OrbitLabel eine Klasse ist.

--- Ende Zitat ---

jup... weil wegen der großschreibung und so...

Darkwalker:
Eine (etwas komplexere) Alternative:

+ Gibt den Labes im Quellcode einen Namen (labelxxx.setName(labelname)

+ Schreibe eine Methode die über alle Children eines Panels läuft und prüft, ob es ein JLabel ist

+ Wenn ja, hole den Namen und benutze den, um den passenden Text zu holen

+ Den Text speicherst du am besten in einer Properties-Datei und schiebst ihn im Programm in ein Resource-Bundel

+ Über den selben Mechanismus kannst du auch Kinder von JTextField etc. mit Begrenzungen und Prüfungen versorgen

Das ist zumindest die Lösung die man bei Internationalisierungen von Programmen in der Anwendung findet. Klappt in der Praxis nahtlos und für den Benutzer völlig transparent.

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln