Enviar JFrame como parametro[Solucionado]

Iniciado por darmorir, 10 Noviembre 2014, 04:42 AM

0 Miembros y 1 Visitante están viendo este tema.

darmorir

Buenas

Tengo el siguiente método para validar campos vacíos dinamicamente, donde se le envia como parametro el JFrame y detectara los componentes, viendo si tienen la instancia de JTextField y entonces vera si esta vació o no, mi problema es que no me lo reconoce JFrame,lo debugeo y ni agarra la cantidad de objetos ni reconoce ninguna instancia o sea no valida nada, pero si cambio el parametro por JPanel si me funciona, ayuda porfa D:!?




public boolean ValidarCamposVacios(JFrame form)
   {
       boolean vacio = true;        
       for(int i = 0; form.getComponents().length>i;i++)
       {
           if(form.getComponents()[i]instanceof JTextField)
           {
               if(((JTextField)form.getComponents()[i]).getText().trim().length() == 0)
               {
                                 
                   vacio = false;
                   break;
               }          
           }
           if(form.getComponents()[i] instanceof JPasswordField)
           {                
               if(((JPasswordField)form.getComponents()[i]).getText().trim().length() == 0)
               {
                     vacio = false;
               }
               
           }
           
           
       }
       return vacio;
   }

MeCraniDOS

#1
No se si te servirá esto, pero prueba a crear una clase asi (solo es una idea, haz todas las modificaciones que necesites)

Código (java) [Seleccionar]
public class Test extends JFrame {

   public boolean ValidarCamposVacios()
   {
       boolean vacio = true;        
       for(int i = 0; getComponents().length>i;i++)
       {
           if(getComponents()[i]instanceof JTextField)
           {
               if(((JTextField)getComponents()[i]).getText().trim().length() == 0)
               {
                                 
                   vacio = false;
                   break;
               }          
           }
           if(getComponents()[i] instanceof JPasswordField)
           {                
               if(((JPasswordField)getComponents()[i]).getText().trim().length() == 0)
               {
                     vacio = false;
               }
               
           }
           
           
       }
       return vacio;
   }
}


Creas un objeto de tu nueva clase, y podrás utilizar todos los metodos de JFrame ademas de tu metodo que has creado.


Código (java) [Seleccionar]
Test a = new Test();
System.out.println(a.ValidarCamposVacios());


Saludos




Ese break es una manera un poco sucia de salir del bucle

"La física es el sistema operativo del Universo"
     -- Steven R Garman

darmorir

Gracias  por responder :)
Ya lo he solucionado poniendo getContentPane() antes del getComponents() y simplifique un poco el codigo, me ha quedado así


public boolean ValidarCamposVacios(JFrame form)
    {
        boolean vacio = true;       
        for(int i = 0; form.getContentPane().getComponents().length>i;i++)
        {
            if(form.getContentPane().getComponents()[i]instanceof JTextField || form.getContentPane().getComponents()[i] instanceof JPasswordField )
            {
                if(((JTextField)form.getContentPane().getComponents()[i]).getText().trim().length() == 0 )
                {
                                 
                    vacio = false;
                    break;
                }   
               
            }
           
           
           
        }
        return vacio;
    }