Moin,
ich hab ein Problem.
Und zwar hat ich ne Anwendung, die viele Buttons hat. Ich möchte da jetzt von 50 Buttons die Beschriftung ändern. Es böte sich eine Schleife an.
Kann ich sowas in einer Schleife realisieren? Also jToggleButton[variable] geht ja nicht. Meine Idee war jetzt, alles in eine Collection packen und die per Schleife durchlaufen, die Gui Objekte rausholen und dann verändern. Das kriegt ich aber nicht hin. weil zb bei der ArrayList müsste ich vermutlich Casten oder sowas. Bei ArrayList.get(i) komm ich so nicht an ArrayList.get(i).setText ran.
Wäre für Hilfe sehr dankbar!
LoD14
Seite 1 von 1
Java mehrere Guielemente ändern
Anzeige
#2
geschrieben 27. September 2010 - 20:16
Wie heißen denn die Buttons? haben die eine Bestimmte Namenskonvention, z.B. btn_Neu1 mit fortlaufender Nummer oder so?
Weil dann könntest du das ganze in ner for-Schleife realisieren.
Du nimmst dann den festen Namen und hängst die laufende Nummer an.
Wenn die Buttons alle verschiedene Bezeichner haben, dann wirds natürlich schwierig...
Ist die GUI selbst von Hand geschrieben oder mit einem GUI-Designer zusammen gebastelt worden?
lg,
Fabi
Weil dann könntest du das ganze in ner for-Schleife realisieren.
Du nimmst dann den festen Namen und hängst die laufende Nummer an.
Wenn die Buttons alle verschiedene Bezeichner haben, dann wirds natürlich schwierig...
Ist die GUI selbst von Hand geschrieben oder mit einem GUI-Designer zusammen gebastelt worden?
lg,
Fabi
#3
geschrieben 27. September 2010 - 22:08
die sind fortlaufend nummeriert.
aber folgendes geht nicht:
for (int i = 1; i < 20; i++)
Button[i].setText();
Das ganze hab ich in Netbeans zusammengeklickt.
aber folgendes geht nicht:
for (int i = 1; i < 20; i++)
Button[i].setText();
Das ganze hab ich in Netbeans zusammengeklickt.
#4
geschrieben 28. September 2010 - 01:26
Zitat (LoD14: 27.09.2010, 14:03)
weil zb bei der ArrayList müsste ich vermutlich Casten oder sowas. Bei ArrayList.get(i) komm ich so nicht an ArrayList.get(i).setText ran.
Hmm, ohne mich näher damit zu beschäftigen: Kann es sein, dass du Generics benutzen musst? Also sowas:
List<Typ_deines_Buttons> Buttons = new ArrayList<Typ_deines_Buttons>();
MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
#5
geschrieben 28. September 2010 - 08:23
ah, danke TO, genau das war es. Ich dachte, dass geht automatisch. Mein fehler, funzt jetzt
#6
geschrieben 29. September 2010 - 16:16
for (int i = 1; i < 20; i++) Button[i].setText();
kann mir dann mal jemand den genauen Grund nennen, warum dieses Verfahren nicht funktioniert?
lg,
Fabi
#7
geschrieben 04. Oktober 2010 - 21:59
Weil der Java-Compiler so denkt, dass es sich bei Button[i] um ein Array handelt. Für das, was du vorhast, gibt es die Java Reflections API. Aber ich persönlich halte es für einfacher, einfach die Buttons in eine ArrayList zu packen und diese dann zu durchlaufen.
#8
geschrieben 07. Oktober 2010 - 08:16
Zitat (Fabi: 29.09.2010, 18:16)
for (int i = 1; i < 20; i++) Button[i].setText();
kann mir dann mal jemand den genauen Grund nennen, warum dieses Verfahren nicht funktioniert?
lg,
Fabi
Es ist ein "undefiniertes" Array, der Compiler kann nicht wissen was drin liegt daher ist es für ihn Inhalt vom Typ "Object" und das hat logischerweise nicht die funktion setText().
Zitat (-__-Cartman-__-: 04.10.2010, 23:59)
Weil der Java-Compiler so denkt, dass es sich bei Button[i] um ein Array handelt. Für das, was du vorhast, gibt es die Java Reflections API. Aber ich persönlich halte es für einfacher, einfach die Buttons in eine ArrayList zu packen und diese dann zu durchlaufen.
Hat er doch oben gemacht, das Problem sind eben o.g. Generics gewesen. Einfach immer ordentlich den Typ deklarieren und man hat keine Probleme
Schöne Grüße
Thema verteilen:
Seite 1 von 1