2016-04-18 6 views
0

Ich möchte 100 Objektnamen aufrufen, ohne ihre Namen 100 Mal schreiben zu müssen sagen wir, dass ich 100 Button namens B1, B2, B3 ... B100 zum Beispiel ich möchte sie sichtbar setzen, so muss ich schreibenWie man serielle Objektnamen in der Schleife aufruft?

B1.setVisible(true); 

und so weiter für den Rest 99 Objekt ich brauche sie in Schleife einzutreten, so dass jedes neue Objekt drehen lassen sichtbar gesetzt ich versuchte B"i".setVisible(true); aber die IDE hat es nicht akzeptieren habe ich versucht B%.setVisible(true);, aber ich weiß nicht wissen, wie man den% wichtigen Hinweis ersetzt: die 100 Objekte existieren bereits danke

+0

Verwenden Sie 'java.util.Map' Implementierung. –

+3

Oder verwenden Sie ein Array der Objekte – STF

+0

Sie könnten sie in ein Array und Schleife durch das gesamte Array setzen, alle auf nicht sichtbar setzen – bpgeck

Antwort

5

Fügen Sie die Tasten auf einem List - Sie, dass in einer Schleife tun können, wenn Sie die Taste Text und ihr Verhalten ähnlich genug ist:

... 
List<Button> buttons = new ArrayList<>(); 
for (int count = 0; count < 100; count++) { 
    Button myButton = new Button("b" + count); 
    buttons.add(myButton); 
} 
... 

Dann Sie über die Liste und Zugriff auf alle Tasten laufen kann:

... 
for (Button b : buttons) { 
    b.setVisible(true); 
} 
... 
+0

die bereits erstellten Schaltflächen –

+0

, also ich habe um 100 Schaltfläche hinzuzufügen! das gleiche Problem –

+0

Sie ** haben **, um sie an einem bestimmten Ort zu erstellen - in der Regel Schaltflächen haben ein bestimmtes Verhalten angebracht und einige eindeutige Text zugewiesen, aber wenn die Schaltflächen ähnlich genug sind, können Sie natürlich auch in einer Schleife erstellen. –

2

Wenn sie Teil eines Objekts sind, können Sie Reflexion verwenden. http://tutorials.jenkov.com/java-reflection/fields.html

Leistung ist es ratsam, nicht die beste, aber wenn Sie eine Legacy-Anwendung, wo Sie diese benötigen haben Sie wahrscheinlich Weg schlimmer als dies in.

Hier ist, was wie ein Code aussehen, die Sie benötigen entsprechen.

MyObject objectInstance = new MyObject(); 
Class aClass = MyObject.class 
for(int i = 1; i <=100; i++){ 
    Field field = aClass.getField("B"+i); 
    // get the value 
    Object value = (Button)field.get(objectInstance); 
    // set the value 
    field.set(objetInstance, value); 
} 
Verwandte Themen