for (Component c : pane.getComponents()) {
if (c instanceof JTextField) {
((JTextField)c).setText("");
}
}
Ma se avete JTextFields più profondamente nidificate, è possibile utilizzare il seguente modulo ricorsiva:
void clearTextFields(Container container) {
for (Component c : container.getComponents()) {
if (c instanceof JTextField) {
((JTextField)c).setText("");
} else
if (c instanceof Container) {
clearTextFields((Container)c);
}
}
}
Edit: un campione per Tom Hawtin - tackline suggerimento sarebbe quello di avere la lista nella classe frame:
List<JTextField> fieldsToClear = new LinkedList<JTextField>();
e quando si inizializza il singolo testo campi, aggiungerli a questa lista:
someField = new JTextField("Edit me");
{ fieldsToClear.add(someField); }
e quando l'utente fa clic sul pulsante Cancella, basta:
for (JTextField tf : fieldsToClear) {
tf.setText("");
}
Chiavi anche le caselle combinate? (Potrebbe anche essere statico, btw.) –
JComboBox (estende JComponent) e JTextField (estende JTextComponent che estende JComponent) sono su due percorsi diversi – akarnokd
Ho controllato l'origine di JComboBox e non vedo alcun posto dove JComboBox aggiunge il suo editor componente alla sua lista di componenti. – akarnokd