String soll als Variablenname dienen

Status
Nicht offen für weitere Antworten.

Garth

Mitglied
Hallo,

ich habe folgendes Problem:
Das Java-Prog soll eine XML-Datei auslesen. In dieser XML Datei sind Felder deklariert (JTextField, JTextArea, ButtonGroup etc).

Basierend auf den Einträgen in der XML Datei soll also quasi ein Formular erstellt werden.
Bei JTextFields kann ich ja problemlos eine temporäre Variable "temp" erstellen und dieser dann mittels "setName" einen neuen Namen zuweisen, den ich aus der XML-Datei als String erhalte.

Bei einer ButtonGroup kann ich dies leider nicht, da hier "setName" nicht vorhanden ist.

Meine Frage also: Wie kann ich eine ButtonGroup mit dem Namen aus meiner XML-Datei erstellen?
Der Name aus der Datei liegt als String vor.


Danke vielmals, Gruß,

Garth
 

sliwalker

Top Contributor
Hi,

das würde ich auch gerne wissen.
Hatte das mal das ich das gebraucht hätte, aber hab damals einen anderen Weg genommen.

greetz
SLi
 

Bleiglanz

Gesperrter Benutzer
was willst du denn mit dem Namen, seh da keine Verwendung dafür?

verwende notfalls eine Map, wenn du die Elemente später wieder ansteuern willst
 

Garth

Mitglied
Je nach Übergabe generiert mir das Programm ein Formular, wenn ich den Variablennamen nicht verändere dann habe ich ja zig Variablen mit dem Namen "temp", und das geht ja mal gar nicht!
 

Bleiglanz

Gesperrter Benutzer
wenn du den Sourcecode generierst, dann nenn doch deine Java-Variable gleich so wie es im XML heisst??

wenn du eine Variable "temp" hast, dann heisst die auch nach

temp.setName("Tump")

immer noch temp??
 

Garth

Mitglied
Wie gesagt, bei Textfeldern geht das natürlich problemlos mit setName, jedoch nicht bei der ButtonGroup!
Das ist ja mein Problem, natürlich möchte ich, dass die ButtonGroup so heisst wie in der XML-Datei, aber wenn ich die Variable doch nicht mit setName umbenennen kann, wie kann ich es dann machen?

Gibt es eine Möglichkeit wie

Code:
ButtonGroup {"String aus XML" als Name für Variable} = new ButtonGroup();

oder so ähnlich?
 

Garth

Mitglied
Vielleicht ein Beispiel:

Ich habe folgende XML-Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Templates>
	<TemplateElement category="incident" name="test1">
		<fieldElement type="JTextField" breite="100" hoehe="20" xpos="10" ypos="10" tfname="tf_Vorname">Vorname</fieldElement>
		<fieldElement type="JTextField" breite="100" hoehe="20" xpos="10" ypos="30" tfname="tf_Nachname">Nachname</fieldElement>
		<fieldElement type="JTextField" breite="100" hoehe="20" xpos="10" ypos="50" tfname="tf_eMail">eMail</fieldElement>
		<fieldElement type="JTextField" breite="100" hoehe="20" xpos="10" ypos="70" tfname="tf_plz">PLZ</fieldElement>
		<fieldElement type="ButtonGroup">group1</fieldElement>
		<fieldElement type="JRadioButton" breite="200" hoehe="20" xpos="10" ypos="90" tfname="Passwort Change" belongsto="group1">Passwort Change</fieldElement>
		<fieldElement type="JRadioButton" breite="200" hoehe="20" xpos="10" ypos="110" tfname="Name Change" belongsto="group1">Name Change</fieldElement>
		<fieldElement type="JTextArea" breite="300" hoehe="100" xpos="10" ypos="150" tfname="Freitext">Freitext</fieldElement>
	</TemplateElement>
</Templates>


Ich lese die XML-Datei Element für Element aus und lasse dann pro Element eine Funktion "generateFields(String ....) aufrufen. Wenn dann ein JTextField kommt passiert dann z.B. das:

Code:
if(type.equals("JTextField"))
			{
				JLabel temp = new JLabel(name);
				temp.setBounds(xpos, ypos, breite, hoehe);
				temp.setName(name);
				
				JTextField temp1 = new JTextField();
				temp1.setBounds(tfxpos, ypos, breite, hoehe);
				temp1.setName(tfname);
				
				this.panel.add(temp);
				this.panel.add(temp1);
			}

In dieser Funktion selbst heisst die Variable natürlich noch temp, ich kann aber dann das JTextField später mit dem Namen "tf_vorname" ansprechen.

Ich hoffe, dass ich mich irgendwie verständlich gemacht habe :)
 

Bleiglanz

Gesperrter Benutzer
ja, also erzeugst du keinen Quelltext sondern das ganze Dingens dynamisch zur Laufzeit

da ist es Wurscht wie die Variablen heissen

und leider hat eine ButtonGroup keinen so schöne ID wie eine JTextBox mit (setName, getName)

also nochmal mein Tipp von oben: alles was du brauchst in einer Map ablegen

und

sowas wie "dynamische" Variablennamen gibts in Java grundsätzlich nicht, das wär auch ganz sinnlos
 

sliwalker

Top Contributor
Bleiglanz hat gesagt.:
und

sowas wie "dynamische" Variablennamen gibts in Java grundsätzlich nicht, das wär auch ganz sinnlos

Aha, gut zu wissen das es das grundsätzlich nicht gibt. Das es nutzlos wäre sei mal dahingestellt.
Ich hab schon eine Situation erlebt, wo ich es gebraucht hätte. Und das ist, wenn Du Daten eben genau aus einer XML-Datei oder HTML/PHP Seite bekommst. Ein Array gibts in Textform nicht.

Wie dem auch sei...
greetz
SLi
 

Bleiglanz

Gesperrter Benutzer
sliwalker hat gesagt.:
Das es nutzlos wäre sei mal dahingestellt.
wie gesagt: nimm eine Map, das ist der logisch richtige Ersatz

Code:
$varname="Sepp";
$$varname = 13;
// lächerlich, da kann ich ja gleich $Sepp schreiben ...
denkst mal drüber nach

Denn in den Skriptsprachen auch nicht anders als mit Map/Hashtables usw. realisiert

Code:
$varname = getStringFromInternetSource();
$$varname = 13;
...
// und jetzt? man kann sowieso NIE auf diese
// Variable zugreifen, weil man bei Programmieren den
// einfach den Namen gar nicht kennt, also schreibt man immer

$$varname = $$varname+42;

// aber das hätte man mit einer Map genauso auch bekommen

in welcher Situation hättest du das denn gebraucht?
 

sliwalker

Top Contributor
Hoi,

ich glaub Dir ja, dass man es anders lösen kann.

Ich habe es gebraucht, als ich die Variablen aus einem HTML-Formular verarbeiten wollte. Hab es letztendlich mit PHP lösen müssen, wo ich auch die $$-Geschichten gebraucht hab.

Wenn es Dich wirklich interessiert, wo soetwas in Aktion ist, dann such ich Dir gerne die Codezeilen geneuer raus. ;)

greetz
SLi
 

semi

Top Contributor
Was spricht dagegen die Klassen, die bestimmte Features nicht haben (setName(...) etc.) zu überschreiben?
Bau Dir ein Framework, in dem alle Komponenten "gleiches Verhalten"* haben. Dazu noch Factories, die aus
den Informationen, die in der XML Datei vorhanden sind, das ganze erzeugen.

* mit gleichem Verhalten meine ich gleiche Schnittstelle zum Schreiben, Lesen, Validieren etc.
z.B. setValue(...), getValue(), isValid() etc. unabhängig davon, ob es ein Textfeld, ComboBox
oder was auch immer ist.
 

AlArenal

Top Contributor
@semi:

Wenn man Bleiglanz Ansatz folgt, spart man sich das Überschrieben einer großen Anzahl von Komponenten. Das Problem ist hier mangelnde Kenntnis / Praxis in Java und nicht dessen Unzulänglichkeiten.

Ich arbeite beruflich mit beiden Sprachen (allerdings deutlich mehr mit Java) und JA, ich hatte kürzlich einen Fall, in dem ich variable Variablennmane benutzt habe und NEIN, ich habe dieses Feature in Java nie vermisst. Ich wüsste nichtmal wo ich es einsetzen sollte.
Wenn man in Java programmiert, sollte man nicht in PHP denken.

If you're in Rome, do like the Romans do.
 

semi

Top Contributor
Ich kenne auch beide Sprachen. Stell Dir vor, Du hast ein Formular, egal ob Java oder PHP und darin sind
Eingabefehler enthalten. Benennst Du die Felder, dann kannst Du eine Fehlermeldung oder Hinweis für den
Anwender generieren, in der der Name des Feldes steht und was er falsch eingegeben hat.
Ich habe in Java so ein Framework mal geschrieben. Es gab verschiedene Typen von Feldern für unterschiedliche
Typen von Eingaben (Datum, Zahlen etc. mit paar Regeln wie Anzahl der Vor-/Nachkommastellen, Pflichtfelder,
Eingabelängebeschränkung etc.). Für den Entwickler war es zunächst mal egal, was und wie die Eingabefelder
funktionieren. Die ganze Validierung geschieht im Hintergrund und ist über Konfigurationsdateien beschreibbar.
Anhand der Namen der Felder konnten dann entsprechend Fehlermeldungen oder Eingabehinweise generiert
werden. Zumindest an Stellen, wo es sich direkt bei der Eingabe nicht verhindern lässt, dass die Eingabe
unvollständig ist (z.B. unvollständiges Datum: "12.01.") oder fehlt (Pflichtfelder leer) war es eine grosse Hilfe,
den Fehler beim Namen nennen zu können.
 
S

SlaterB

Gast
wo immer man den Namen der Variable angeben muss,
könnte man genauso gut einen beliebigen Variablennamen nehmen
und den zugehörigen Namen im Objekt/ in eine Map ablegen, fertig,

wenn man natürlich auf fertige Frameworks zugreift die mit dem Variablennamen arbeiten
siehst schlecht aus, das stimmt,
aber gibt es sowas? selber entwickeln sollte man das wohl nicht ;)

außerdem funktioniert sowas wohl kaum bei der Übergabe von Objekten an andere Operationen
(mit festen Namen für lokale Variablen)
 

Bleiglanz

Gesperrter Benutzer
LOL, das ist genau der fall bei dem ich das auch schon gemacht habe
Code:
    für alle ($name,$value) in $_GET
            $$name = $value
....
ist eigentlich nur ein Trick, um die alten automatischen Variablen von Formularfeldern wieder zu haben,

Wenn ich mein Argument mal zusammenfassen darf:

$$name = "wert"

ist syntactic sugar, das spart nur Schreibarbeit; in Java ist das aus prinzipiellen Gründen nicht möglich und man nimmt eben eine java.util.Map
 

semi

Top Contributor
Der Name ist eine Eigenschaft des Eingabefeldes. Wenn man es ausserhalb definiert,
hat es dann recht wenig mit OOP zu tun. Jede Komponente soll sich gefälligst um den
eigenen Kram kümmern. OK, wir haben vermutlich unterschiedliche Szenarien im Kopf. ;)
Der Vorteil eines Frameworks ist auch, dass sich jeder Entwickler an gleiche Spielregeln
hält. Es ist in Swing leider so, dass es zu viele Möglichkeiten gibt, eine und die gleiche
Funktionalität zu implementieren. Folge: Jeder macht was er will und der Code wird zum
Alptraum. Die schnellere und einfachere Lösung ist nicht immer die beste.
 

semi

Top Contributor
@Bleiglanz
Es gibt bereits eine Funktion in PHP dafür.

extract($_GET)

Das Ergebnis ist das gleiche. Es importiert die Name-Value-Pairs in die Symboltabelle.

:bae:
 

Bleiglanz

Gesperrter Benutzer
mal anders gesagt
Code:
$$name = "wert" ; //ist unschön:
                            //was wenn es die Variable $name schon gibt??
                            //wenn in $name ungültige Sonderzeichen sind??
                            //Namensraumverseuchung...

parameterMap.put(name,"wert"); //ist gut
und was meinst du mit
Der Name ist eine Eigenschaft des Eingabefeldes. Wenn man es ausserhalb definiert,
hat es dann recht wenig mit OOP zu tun.

dynamische Variablennamen haber erst recht überhaupt nix mit OO zu tun
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Variablenname soll der Inhalt vom String sein Java Basics - Anfänger-Themen 2
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
E Erste Schritte Array soll kleiner werdenden String erstellen Java Basics - Anfänger-Themen 5
S Methoden Methode soll String zurückgeben Java Basics - Anfänger-Themen 11
E String soll mit Großbuchstaben anfangen und keine Sonderzeichen enthalten Java Basics - Anfänger-Themen 4
J String soll einen Zahlenwert ausgeben? Java Basics - Anfänger-Themen 9
G Funktion soll ein String in Gitterform liefern Java Basics - Anfänger-Themen 6
O JComboBox Item soll sich als String speichern Java Basics - Anfänger-Themen 5
C String soll auf gleichheit (=teilweise) überprüft Java Basics - Anfänger-Themen 5
U StringTokenizer soll in String-Array schreiben Java Basics - Anfänger-Themen 19
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
N null in String replacen Java Basics - Anfänger-Themen 16
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
M Eclipse kennt keine String Klasse mehr Java Basics - Anfänger-Themen 1
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
H Überprüfen ob String Array leer ist Java Basics - Anfänger-Themen 4
A Korrigierte <String> Liste zurückgeben Java Basics - Anfänger-Themen 22
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
Poppigescorn String mit mehreren Wörtern füllen? Java Basics - Anfänger-Themen 4
I String Expression mit Java validieren (true / false) Java Basics - Anfänger-Themen 34
B String - Wörter finden, welches Punkt und entsprechender Pre / Suffix hat? Java Basics - Anfänger-Themen 30
T Maximale Anzahl von Konsonanten im String Java Basics - Anfänger-Themen 6
H String verschlüsseln - eigener Algorithmus Java Basics - Anfänger-Themen 104

Ähnliche Java Themen

Neue Themen


Oben