Komponenten automatisch erzeugen

Status
Nicht offen für weitere Antworten.

xpucto

Mitglied
Hallo!
Ich würde gern eine Funktion erstellen womit ich viele Komponenten aufeinmal erzeugen kann. Etwas wie:
Code:
for (i=0,1<10;i++) {
JLabel[] myLabel+i = new JLabel[10];
[/b]
Also ich möchte einfach die Komponenten automatik nennen können, wie zB.
Code:
myLabel+i
, wo ich dann am Ende die Folgende Komponenten bekommen würde:
myLabel0
myLabel1
myLabel2
myLabel3...........
Die Syntax
Code:
myLabel+i
geht aber nicht. Was wäre das richtige?[/quote]
 
Ich möchte 10 Radiobuttonsgruppen erzeugen mit jeweils 4 Radiobuttons. Wenn es nicht automatisiert wird brauche ich 3 Seiten von codes!
 
Also, wie gesagt, nach deiner Methode funktioniert es nicht.

Es besteht aber die Möglichkeit die Buttons in ein Feld zu schreiben:
Code:
JLabel[] myLabel = new JLabel[10];
for (i=0,1<10;i++) { 
myLabel[i] = new JLabel();
}
 
Hier ein Stück von dem Code. Ich möchte eine Frage von einem File holen, die auf einem Label Zeigen, und dann 4 mögliche Antworten pro RadioButtons. Der File für dir Fragen ist "rb0" und für die erste mögliche antwort ist "rb1". Nur es ist alles sehr aufwendig. Dann muss ihc noch die Radiobuttonsgruppen erstellen.
Code:
String theFile = "rb0";
qnb = Escabelle.chooseQuestionsNB(dir,theFile);                 //Aufruf der Methode um die Fragen aufzuwählen
for (int h=0;h<4;h++) {
if (h == 0) {
//Questions
theFile = "rb0";
myQuestions = Escabelle.showExercices(dir,theFile,qnb);         //Fragen von dem File holen
JLabel[] q = new JLabel[10];
        for (int i=0; i<10; i++) {
                q[i] = new JLabel(myQuestions[i]);
                add(q[i]);
                BoxA.add(q[i]);
                add(BoxA, FlowLayout.CENTER);
        }//End for i
}//End if h == 0

//Answer 1
if (h == 1) {
theFile = "rb1";
myQuestions = Escabelle.showExercices(dir,theFile,qnb);         //Fragen von dem File holen
JRadioButton[] ans1 = new JRadioButton[10];
        for (int i=0; i<10; i++) {
                ans1[i] = new JRadioButton(myQuestions[i]);
                add(ans1[i]);
                BoxB.add(ans1[i]);
                add(BoxB, FlowLayout.CENTER);
        }//End for i
}//End if h == 0
}//End for h
 
Code:
for (i=0,1<10;i++) {
myLabel[i] = new JLabel();
Das verwende ich schon aber ich hätte auch gern dazu die Möglichkeit die Name dynamisch zu wählen so dass ich mich am Ende besser auskenne.
 
Also wenn ich dich richtig verstanden habe:

Datei1:
Frage1
Frage2
...

Datei2:
Frage1Antwort1
Frage1Antwort2
Frage2Antwort1
...

Also musst du ja erst eimal die Anzahl der Fragen (wenn richtig verstanden 10) auslesen.
Also hast du ein Feld von Fragen als Label und ein Feld mit den Antworten (40) als JButton.

Du musst irgendwo eine Abhängigkeit reinbringen oder gleich eine neue Klasse mit Frage und Antworten bilden und diese in einen Vektor schreiben.
 
1.) Du brauchst ne Liste, wo die ganzen Namen drin stehen (z.B. ein String[])
2.) Namen und Komponenten assoziieren (vgl. Hashtable names)
Code:
String[] names;
//... names füllen!
Hashtable keyValue = ...;
for (i=0,1<10;i++) { 
  myLabel[i] = new JLabel();
  keyValue.put( names[i], myLabel[i] );
}

Zugreifen geht dann so. Als Beispiel sei gegeben der Key "BetragInEuro":

Code:
JLabel label = (JLabel)keyValue.get("BetragInEuro");
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben