Skip to content


Método genérico para limpiar datos de formularios en Java

Cuantas veces habéis necesitado limpiar los datos de todo un formulario desde varias partes de vuestro código, y conforme se va ampliando el programa o surgiendo nuevos campos hay que añadir código para limpiar los componentes nuevos.

Con este método genérico que os doy aquí, sólo tenéis que llamar al método “clearForm()” pasándole el objeto “JPanel” o “JScrollPane” para limpiar todo.

[code lang=”java”]
/**
* Método que limpia los datos de todos los componentes
* susceptibles de ser puestos en blanco, como los “JTextField”
* “jTextAreas”, etc…, que pertenezcan a un “JPanel” o “JScrollPane”,
* es recursivo, asi que si dentro del panel hay otro panel con
* más componentes susceptibles también los pondrá en blanco.
*/
private void clearForm(Object panel) {
// Obtenemos el nombre de la clase
String nombre_clase = panel.getClass().getName();
if (nombre_clase.equals(“javax.swing.JPanel”)) {
// Estamos en el caso de un JPanel
clearPanel((javax.swing.JPanel) panel);
} else if (nombre_clase.equals(“javax.swing.JScrollPane”)) {
// Estamos en el caso de un JScrollPane
clearScrollPane((javax.swing.JScrollPane) panel);
}
}

/**
* Método que limpia los datos de todos los componentes
* susceptibles de ser puestos en blanco, como los “JTextField”
* “jTextAreas”, etc…, que pertenezcan a un “JPanel”,
* es recursivo, asi que si dentro del panel hay otro panel con
* más componentes susceptibles también los pondrá en blanco.
*/
private void clearPanel(javax.swing.JPanel panel) {
// Obtenemos todos los componentes que cuelgan del panel
java.awt.Component[] componentes = panel.getComponents();
for (int i = 0; i < componentes.length; i++) {
clearComponent(componentes[i]);
}
}

/**
* Método que limpia los datos de todos los componentes
* susceptibles de ser puestos en blanco, como los “JTextField”
* “jTextAreas”, etc…, que pertenezcan a un “JScrollPane”,
* es recursivo, asi que si dentro del panel hay otro panel con
* más componentes susceptibles también los pondrá en blanco.
*/
private void clearScrollPane(javax.swing.JScrollPane panel) {
// Obtenemos todos los componentes que cuelgan del panel
java.awt.Component[] componentes = panel.getViewport().getComponents();
for (int i = 0; i < componentes.length; i++) {
clearComponent(componentes[i]);
}
}

/**
* Este método al que le pasamos un Componente, comprueba
* si es susceptible de ser puesto en blanco, si lo es, lo pone
* en blanco, si en otro caso es un “JPanel” o un “JScrollPane”
* llamará recursivamente a “clearPanel” o “clearScrollPane”
*/
private void clearComponent(java.awt.Component comp) {
// Nombre de la clase del componente
String nombre_clase = comp.getClass().getName();
if (nombre_clase.equals(“javax.swing.JTextField”)) {
// Es un JTextField asi que lo ponemos en blanco
((javax.swing.JTextField) comp).setText(“”);
} else if (nombre_clase.equals(“javax.swing.JComboBox”)) {
// Es un JComboBox asi que ponemos el primer elemento
((javax.swing.JComboBox) comp).setSelectedIndex(0);
} else if (nombre_clase.equals(“javax.swing.JTextArea”)) {
// Es un JTextArea asi que lo ponemos en blanco
((javax.swing.JTextArea) comp).setText(“”);
} else if (nombre_clase.equals(“javax.swing.JPanel”)) {
// Es un JPanel asi que llamamos a clearPanel
clearPanel((javax.swing.JPanel) comp);
} else if (nombre_clase.equals(“javax.swing.JScrollPane”)) {
// Es un JScrollPane asi que llamamos a clearScrollPane
clearScrollPane((javax.swing.JScrollPane) comp);
}
}
[/code]

Posted in Java.

Tagged with , , .


10 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Víctor says

    muy buena Coler, intentaré colgar uno parecido en C#

  2. Jose says

    No esta mal Coler, Lo unico que falta es comentar el codigo. No te enseñaron eso en la Uni? de todas formas muy util.

  3. Coler says

    Ya está comentado.

  4. Damelly says

    hace mucho que buscaba esta informacion, de verdad muchas gracias.. Dios te bendiga.
    P.D: te faltó limpiar el Jlist, para quien lo necesita se hace asignando un nuevo modelo vacío a la lista existente:
    else if (nombre_clase.equals(“javax.swing.JList”)) {
    // Es una lista
    DefaultListModel modVacio = new DefaultListModel();
    ((javax.swing.JList) comp).setModel(modVacio);
    }

  5. carlos says

    gracias
    no lo hice exactamente asi
    pero me sirvio de mucho

  6. Norman says

    Gracias-

  7. Victor says

    Excelente!!!!

  8. Diego says

    ¿Qué significa el &lt ?

  9. Julian says

    Diego, &lt significa less than sing que es equivalente a <, puedes borrar el < lo cambias por <

  10. Julian says

    Diego, eso significa menor que puedes remplazarlos por <

    Muchas gracias muy buen codigo, incluso sirve para Container si hacemos un casteo a JPanel



Some HTML is OK

or, reply to this post via trackback.