PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JAVA] und ein dummes Problem!



oafish
07-04-2002, 09:11
Hallo,
unter Java ist mir jetzt ein Problem aufgekommen, was ich seit Tagen nicht lösen konnte.
Hier kurz das was ich machen möchte:
Aus einer Textdatei lese ich die Namen von Buttons aus. Diese Buttons mit dem gleichen Namen existieren bereits auf der Form. Aus einer anderen Textdatei lese ich die Beschriftung für die Buttons aus.
Das Problem ist, die Namen sind Strings!

Beispiel:


String knopf = new String ("button");
String label = new String("Hallo");

Frame1 frame = new Frame1();
frame.knopf.setLabel(label);


Wie kann ich das lösen? Habs auch mit casten versucht, ging nicht.
Hoffe wirklich das mir jemand helfen kann...
Gruß an alle
oafish

Doc Maverick
07-04-2002, 13:53
Hi,
wenn ich Dich recht verstanden habe, dann willst Du eine textuelle Zuordnung der Namen zu den Elementen?
Da solltest Du mal einen Blick auf die Hash-Tables werfen. Es gibt davon eine Menge Klassen unter dem Packet java.util.
Tschüß.

oafish
07-04-2002, 14:48
Hallo,
danke für Deine antwort. Werd mich gleich mal reinlesen :)

Weißt du ob es möglich ist, Objekte zu ändern?

beispielsweise sowas:

Button te1 = new Button();
... java macht was

und jetzt te1 auf te2 ändern.
Geht sowas?

Gruß
oafish

Doc Maverick
07-04-2002, 15:31
Hi,
also wenn Du meinst, daß eine Variable auf ein anderes Objekt verweisen soll, ja das geht.
Tschüß.

oafish
07-04-2002, 16:54
Hallo,
mir gehts es vielmehr um eine Art dynamic. Also ich habe mehrer Strings die die Namen der Buttons entahlten. Gleichzeitig hab ich mehrer Strings die die entsprechenden Labels beinhalten. Jetzt muß ich es irgendwie hinbekommen dass diese dynamisch erzeugt werden. Klar könnte ich jetzt jedesmal per Hand Button b = new Button() usw. tippen. Das soll mir aber das Programm machen.

Die Textdatei sieht so aus:

button1:notepad.exe:run notepad
button2:vi /smb.conf:smb.conf ändern
button3:more /smb.conf:smb.conf anzeigen
usw.

Es muß doch möglich sein das dynamisch hinzukriegen...

Gruß
oafish

jgbauman
08-04-2002, 01:29
Was Du vermutlich suchst (Du weißt es nur noch nicht ;-) nennt sich Introspection bzw Reflection. D.h. programmiersprachliche Einheiten (in Java Objekte) können Auskunft über ihren Typ, ihre eigenschaften, ihre Verwendung etc. geben.

Das meiste dazu findest Du in java.lang und java.lang.reflect.

Dürfte dann irgendwie so Aussehen.

((Button)(frame.getClass().getDeclaredField(knopf) .get(frame)) ).setLabel(label);

Alternativ (vielleicht auch besser, rein sicherheits- und performance-technisch) den Button nicht nur in der Variable button abzulegen (wenn überhaupt) sondern auch in einer java.lang.Hashtable unter einem passenden String als Schlüssel, z.B. "button". Dann kannst Du einfacher

((Button)hash.get(knopf)).setLabel(label);

benutzte.