viernes, 27 de abril de 2012

Limpiar los componente contenidos en un JPanel

En el mundo Java el estandar para las interfaces de usario en aplicaciones de escritorio es Swing y me he topado muchas veces con la necesidad de limpiar un formulario despues que un usuario realizo algua accion, si el panel contiene 10 componentes no hay tanto problema pero imaginen un panel con 50 componentes de diferente tipo (inputTexts, combos, checks, radios, etc) esto se volveria muy tedioso, para esto podemos hacer uso de una propiedad que existe desde la version 5 de Java, Reflection :

 public static void limpiarPanel(JPanel panel) {
        if (panel != null) {
            for (Component item : panel.getComponents()) {

                if (item instanceof JTextField) {
                    ((JTextField) item).setText(null);
                } else if (item instanceof JCheckBox) {
                    ((JCheckBox) item).setSelected(false);
                } else if (item instanceof JComboBox) {
                    ((JComboBox) item).setSelectedIndex(0);
                } else if (item instanceof JFormattedTextField) {
                    JFormattedTextField jftf = (JFormattedTextField) item;

                    InputVerifier verificador = jftf.getInputVerifier();
                    jftf.setInputVerifier(null);
                    jftf.setText(null);
                    jftf.setValue(null);
                    jftf.setInputVerifier(verificador);
                } else if (item instanceof JCheckBox) {
                    ((JCheckBox) item).setSelected(false);
                }
            }
        }
    }


No hay comentarios:

Publicar un comentario