myName: Formular

Gibt es, ähnlich wie mit JavaScript, die Möglichkeit mit Java die Elemente eines Panels zu durchlaufen.

Ich habe ein JPanel mit einer unbekannten Anzahl von JLabels und JTextFields, da die Daten aus einer Datenbank genommen werden. Die dargestellten Daten möchte ich dann gerne ändern lassen und wieder in die Datenbank schreiben lassen.

Hat jemand eine Idee wie man das am Geschicktesten angeht? Ich habe versucht eine Collection anzulegen, und jedes neues JLabel oder JTextField mitzuprotokollieren und dann mit Iterator durchzulaufen, allerdings kommt ich dann nicht mehr an die Daten ran.

Bei Google/SUN etc habe ich leider nichts gefunden. Hat hier jemand eine brauchbare Idee?

  1. Hallo,

    Gibt es, ähnlich wie mit JavaScript, die Möglichkeit mit Java die Elemente eines Panels zu durchlaufen.

    Ja, z.B. über meinPanel.getComponents().
    Aber wieso sollte man das wollen, wenn man sich die Komponenten bzw.
    die zugrundeliegenden Models/Documents viel bequemer vorher, nämlich
    beim Befüllen des Panels, merken kann?

    Ich habe ein JPanel mit einer unbekannten Anzahl von JLabels und JTextFields, da die Daten aus einer Datenbank genommen werden.

    So unbekannt kann die Anzahl ja gar nicht sein, schließlich könntest
    du sie zählen.

    Hat jemand eine Idee wie man das am Geschicktesten angeht? Ich habe versucht eine Collection anzulegen, und jedes neues JLabel oder JTextField mitzuprotokollieren und dann mit Iterator durchzulaufen, allerdings kommt ich dann nicht mehr an die Daten ran.

    Wieso kommst die nicht mehr an die Daten ran? Welche Daten überhaupt?

    Also, ich würde mir wohl die den JTextFields zugrundeliegenden
    Document-Objekte merken. Diese Objekte müssen in irgend einer Form
    dem ursprünglichen Datensatz zuordenbar sein, so daß du dann eben den
    jeweils passenden Datensatz updaten kannst, sofern das Textfeld
    geändert wurde.

    Wie du das realisierst, liegt an dir. Spontan würde mir eine HashMap
    mit der unique ID des Datensatzes als Schlüssel und einem Array aus
    Document-Objekten als Wert einfallen. Die Reihenfolge der Elemente
    im Array müßte dann halt auf eine bestimmte Spaltennummer bzw. einen
    bestimmten Spaltenname abbildbar sein.

    Das nur ganz grob beschrieben.

    Wenn dir das noch nicht hilft, dann erklär dein eigentliches Problem
    mal ein bißchen genauer.

    Gruß
    Slyh