Eingabefelder einer Maske löschen

d_ausstroit

Mitglied
Hai.
Ich habe eine Maske mit sehr vielen Eingabefeldern (Textfelder und Combo-Boxen). Nun möchte ich alle Inhalte der Eingabefelder nachdem Betätigen eines Buttons löschen. Allerdings nicht alle einzeln.

Ich suche also eine Möglichkeit alle Felder der Maske zu durchlaufen und wenn es sich um ein Textfeld oder eine Combo-Box handelt, den Inhalt zu löschen.

Vielen Dank im voraus für Eure Hilfe und Vorschläge

Dirk
 
Moin!
Sind die Componenten alle in einem Container enthalten, dann bekommst du mit "getComponents()" einen Array mit eben diesen Komponenten.
Mit dem instanceof - Operator kannst du überprüfen, um welchen Componententyp es sich genau handelt, und dann entsprechend den Inhalt löschen:
Code:
Component[] childs = parentContainer.getComponents();
for(Component child : childs){
    if(child istanceof JTextField)
        ((JTextField)(child)).setText("");
    else ....
}

*grüssle*
MeinerEiner
 
Moin MeinerEiner_80.

Meine Felder liegen alle auf verschiedenen JPanel. Wenn ich Dein Beispiel übernehme, kennt er das "parentContainer" nicht.

Wo liegt mein Fehler?
 
Der Name "parentContainer" war nur als Beispiel gedacht. Keiner deiner Panels heißt wahrscheinlich parentContainer, da muss dann eine Referenz zu eben diesen Panels stehen.

Es funktioniert auch, wenn alle deine Panels in einem Fenster liegen. Dann kann man das Beispiel ein wenig abwandeln. Wenn sie in verschiedenen Fenstern liegen, musst du wohl oder übel für jedes einzelne Panel die Methode aufrufen.
Hierbei ist nun parentContainer der Container, der alle anderen beinhaltet( Kann zum beispiel ein JFrame sein)


Code:
....
clearAll(parentContainer);
...

public void clearAll(Container parentContainer){
Component[] childs = parentContainer.getComponents();
for(Component child : childs){
    if(child istanceof JTextField)
        ((JTextField)(child)).setText("");
    else if(child instanceof Container)
       clearAll((Container)child)
    else...
}
}
*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Zurück