Skip to content

Categories:

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.

/**
* 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);
}
}

No hay artículos relacionados. Echa un ojo a estos:

    Posted in Sin categoría.


    4 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);
      }



    Some HTML is OK

    or, reply to this post via trackback.