Autor Thema: [Java] In Schleife verschieden Labels 'beschriften'  (Gelesen 2828 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Vorsicht: Java-Vollnoob/Mit-Programmieren-Auch-Sonst-Nicht-Allzu-Viel-Am-Hut.

Ich versuche in einer Schleife verschiedene Labels im GUI zu 'beschriften'

Also zB. bei i=1 Label1, bei i=2 Label2 usw.

In VBasic ging das mit Label&i (IIRC). Jetzt frag ich mich, ob das auch mit Java irgendwie geht.

EDIT: Vielleicht hab ich mich missverständlich ausgedrückt.
Ich will nicht die Variable, die im Label ausgegeben wird verändern, sondern ich will ein anderes Label ansprechen, das dann die jeweilig Variable zeigen soll.
« Letzte Änderung: 4.08.2007 | 19:32 von Imion »
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline Zero

  • Gänseblümchen
  • Famous Hero
  • ******
  • Rating: Awesome
  • Beiträge: 2.387
  • Geschlecht: Männlich
  • Username: Khaoskind
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #1 am: 4.08.2007 | 18:50 »
das müsste
label + i
sein...
101010

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #2 am: 4.08.2007 | 19:07 »
Also Label+i.setText() mag Netbeans irgendwie gar nicht.
Andere Ideen?
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline Zero

  • Gänseblümchen
  • Famous Hero
  • ******
  • Rating: Awesome
  • Beiträge: 2.387
  • Geschlecht: Männlich
  • Username: Khaoskind
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #3 am: 4.08.2007 | 19:33 »
label = "label" + i


[edit] aach quatsch... so:
label.setText("label" + i)


[edit2] jetzt erst den kommentar gelesen... das geht so nich... da musst du den array für nehmen das dann durch laufen wird...
« Letzte Änderung: 4.08.2007 | 19:38 von Zero »
101010

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #4 am: 4.08.2007 | 19:42 »
Vielleicht bin ich jetzt zu blöd, aber irgendwie versteh ich dich momentan nicht.
Ich stell mal die Schleife rein.


Stehe aber immer noch vor dem Problem, die Einzelnen Werte im Array jeweils einem Label zuzuordnen.
Sprich:
wert[0] in Label1
wert[1] in Label2
usw.


            orbits[0]=firstplanetorbit;

while(orbits[i]>innerlimit)
            {
                i++;
               
                OrbitalSpacing();                                /*Hier wird orbitalspacingratio ermittelt*/
                orbitstemp=orbits[i-1]/orbitalspacingratio;
               
                if (orbitstemp>innerlimit)
                    orbits[i]=orbitstemp;
               
                OrbitLabel.setText(""+orbits[i]);            /*Hier sollten die verschiedenen Label beschriftet werden*/
               
               
            }
« Letzte Änderung: 4.08.2007 | 19:50 von Imion »
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline Zero

  • Gänseblümchen
  • Famous Hero
  • ******
  • Rating: Awesome
  • Beiträge: 2.387
  • Geschlecht: Männlich
  • Username: Khaoskind
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #5 am: 4.08.2007 | 20:03 »


            orbits[0]=firstplanetorbit;
            List orbitlabelarray = new ArrayList();

while(orbits[i]>innerlimit)
            {
                i++;
               
                OrbitalSpacing();                                /*Hier wird orbitalspacingratio ermittelt*/
                orbitstemp=orbits[i-1]/orbitalspacingratio;
               
                if (orbitstemp>innerlimit)
                    orbits[i]=orbitstemp;
               
                orbitlabelarray[i] = (new OrbitLabel()).setText(""+orbits[i]);            /*Hier sollten die verschiedenen Label beschriftet werden*/
               
               
            }
101010

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #6 am: 4.08.2007 | 20:21 »

            orbits[0]=firstplanetorbit;
            ArrayList orbitlabelarray = new ArrayList();

while(orbits[i]>innerlimit)
            {
                i++;
               
                OrbitalSpacing();                                /*Hier wird orbitalspacingratio ermittelt*/
                orbitstemp=orbits[i-1]/orbitalspacingratio;
               
                if (orbitstemp>innerlimit)
                    orbits[i]=orbitstemp;
               
                orbitlabelarray[i] = (new OrbitLabel()).setText(""+orbits[i]);            /*Hier sollten die verschiedenen Label beschriftet werden*/
               
               
            }


gibt mir ein 'array required, but java.util.ArrayList found' und ein 'cannot find symbol: class OrbitLabel'  für 'orbitlabelarray[ i] = (new OrbitLabel()).setText(""+orbits[ i]);' zurück.

Da ich mich erst seit 2 Tagen mit Java beschäftige kann ich mit der Fehlermeldung recht wenig anfangen.
Trotzdem danke für die Mühe.
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline avakar

  • Adventurer
  • ****
  • Gelegenheitsspieler
  • Beiträge: 818
  • Geschlecht: Männlich
  • Username: avakar
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #7 am: 4.08.2007 | 20:51 »
Ersetze
orbitlabelarray[i] = (new OrbitLabel()).setText(""+orbits[i]); durch
orbitlabelarray.add((new OrbitLabel()).setText(String.valueOf(orbits[i])));
Ausserdem musst du die Klasse OrbitLabel importieren.

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #8 am: 4.08.2007 | 20:58 »
(...)
Ausserdem musst du die Klasse OrbitLabel importieren.

OrbitLabel0 bis OrbitLabel12 sind allerdings jLabel auf der GUI und keine Klassen. Wüsste nicht wie man die importieren sollte, lasse mich allerdings gern eines Besseren belehren.
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline avakar

  • Adventurer
  • ****
  • Gelegenheitsspieler
  • Beiträge: 818
  • Geschlecht: Männlich
  • Username: avakar
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #9 am: 4.08.2007 | 21:08 »
Wie keine Klasse? Du verwendest OrbitLabel aber wie ein normales Object in deinem Code, also musst du es auch importieren (genau das sagt die Fehlermeldung "cannot find symbol: class OrbitLabel").
Oder sind OrbitLabel0, OrbitLabel1 usw. Variablennamen für Objekte der Klasse JLabel?

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #10 am: 4.08.2007 | 21:15 »
in meinem Originalcode stand
OrbitLabel.setText(""+orbits[i]);
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


                orbitlabelarray[i] = (new OrbitLabel()).setText(""+orbits[i]);         

geworden.
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline avakar

  • Adventurer
  • ****
  • Gelegenheitsspieler
  • Beiträge: 818
  • Geschlecht: Männlich
  • Username: avakar
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #11 am: 4.08.2007 | 21:23 »
Dann solltest du die OrbitLabels erstmal in ein Array stecken. Etwa so
List theLabels = new ArrayList(13);
theLabels.add(0, OrbitLabel0);
theLabels.add(1, OrbitLabel1);
    ...
theLabels.add(12, OrbitLabel12);

Danach kannst du in einer Schleife die Labels mit dem Text versehen, etwa so
for (int i=0; i<13; i++) {
    // berechne hier irgendwas

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

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

Offline Imion

  • Legend
  • *******
  • GURPShead
  • Beiträge: 4.866
  • Username: Imion
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #12 am: 4.08.2007 | 21:32 »
(...)

Juchu, so klappts. Danke Dir!
If the internet has shown us anything... anything... it has shown us that there is no such thing as "too batshit crazy to operate a computer."

Everybody's a book of blood. Wherever we're opened, we're red.

Außerirdische sind nicht rechtsfähige, bewegliche, herrenlose Sachen. Wer sie findet und mitnimmt darf sie behalten.

Offline Zero

  • Gänseblümchen
  • Famous Hero
  • ******
  • Rating: Awesome
  • Beiträge: 2.387
  • Geschlecht: Männlich
  • Username: Khaoskind
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #13 am: 4.08.2007 | 21:59 »
Zitat
OrbitLabel.setText(""+orbits[i]); sieht übrigens nach einer Klassen- oder Objektmethode aus, daher ging Zero wohl davon aus, dass es OrbitLabel eine Klasse ist.

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

Darkwalker

  • Gast
Re: [Java] In Schleife verschieden Labels 'beschriften'
« Antwort #14 am: 14.09.2007 | 13:43 »
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.