Hallo,
ich hätte eine Frage zur programminteren Verwaltung von Daten.
Ich stelle in einen Java-Gui (Applet) Formulare da. Die Info welches Feld wo im Formular liegt erhalte ich durch ein Servlet. Das Applet kennt nur den Names eines Feldes und die entspr. Swing-Komponente.
Das Servlet weiß was passiert,wenn z.B. eine ComboBox angeklickt wird.
Die Felder des Formulars speichere ich mir in einer Hashtabele. Key ist der Feldname und Value ist eine Referenz auf die Swing-Komponente.
Somit kann ich jederzeit über den Feldnamen auf die Swing-Komponente zugreifen und z.B. ihren aktuellen Wert abfragen oder setzen.
Soll das Formular gespeichert werden übergebe ich dem Servlet die aktuelle Belegung aller Formularfelder. Wie die Daten dann gespeichert werden ist Sache des Servlets.
Nun kommt meine Frage:
Damit ich die aktuelle Belegung der Formularfelder erhalte mach ich folgendes:
Aus der Hashtabelle (fields) hole ich mir mit fields.key() die Schlüsselfelder als Enumeration (keys). Dann hole ich mir über eine While-Schleife den key als String
„varName = (String) keys.nextElement();“
Über varName kann ich dann wieder die Hashtabelle lese und mir die SwingKomponente holen „comp = (JComponent)fields.get(varName);“
Von der Komponete kann ich mir nun den aktuellen Wert geben lassen
z.B: „value = comp.getText;“
Feldname und Wert werden nun in eine neue Hashtabelle gespeichert und dem Servlet übergeben.
Ist die Verwaltung der Daten so sinnvoll oder wie macht man das besser ? Es ist doch irgendwie blöd erst den Key zu lesen damit man dann mit dem Key auf die eigentlichen Daten zugreifen kann.
In obigem Fall könnte man ja auch direkt auf fields.values() zugreifen und dann über die Komponente den Namen des Feldes erfragen.
An anderen Stellen im Programm habe ich aber ein ähnliched Problem.
In einem TabbedPane können mehrere Formulare liegen d.h. unter jedem Reiter ein eigenes Formular. Während der Anzeige des Formulars weiß ich, dass auf meinem Hauptfprmular ein TabbedPane sitze. Die Namen und Anzahl der Reiter ergibt sich wiederum aus einer Hashtabelle. Key ist der Name des Reiters, Value ist eine Liste (LinkedList) der auf diesem Reiter anzuzeigenden Formularfelder. Um an die Daten zu kommen muß ich auch wieder die Key der Hashtabelle lesen um dann auf die Liste der Formularfelder zugreifen zu können. Hier kann man den Namen des Tabs nicht aus der Feldliste bestimmen d.h. hier muß ich den Key lesen damit ich den Namen des Tabs kenne.
Was wäre hier eine bessere Lösung ?
Danke
Albert