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]
muy buena Coler, intentaré colgar uno parecido en C#
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.
Ya está comentado.
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);
}
gracias
no lo hice exactamente asi
pero me sirvio de mucho
Gracias-
Excelente!!!!
¿Qué significa el < ?
Diego, < significa less than sing que es equivalente a <, puedes borrar el < lo cambias por <
Diego, eso significa menor que puedes remplazarlos por <
Muchas gracias muy buen codigo, incluso sirve para Container si hacemos un casteo a JPanel