Foro de elhacker.net

Programación => Java => Mensaje iniciado por: darmorir en 10 Noviembre 2014, 04:42 am



Título: Enviar JFrame como parametro[Solucionado]
Publicado por: darmorir en 10 Noviembre 2014, 04:42 am
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:!?


Código:

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


Título: Re: Enviar JFrame como parametro
Publicado por: MeCraniDOS en 10 Noviembre 2014, 12:57 pm
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
  1. public class Test extends JFrame {
  2.  
  3.    public boolean ValidarCamposVacios()
  4.    {
  5.        boolean vacio = true;        
  6.        for(int i = 0; getComponents().length>i;i++)
  7.        {
  8.            if(getComponents()[i]instanceof JTextField)
  9.            {
  10.                if(((JTextField)getComponents()[i]).getText().trim().length() == 0)
  11.                {
  12.  
  13.                    vacio = false;
  14.                    break;
  15.                }          
  16.            }
  17.            if(getComponents()[i] instanceof JPasswordField)
  18.            {                
  19.                if(((JPasswordField)getComponents()[i]).getText().trim().length() == 0)
  20.                {
  21.                      vacio = false;
  22.                }
  23.  
  24.            }
  25.  
  26.  
  27.        }
  28.        return vacio;
  29.    }
  30. }

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
  1. Test a = new Test();
  2. System.out.println(a.ValidarCamposVacios());

Saludos



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



Título: Re: Enviar JFrame como parametro[Solucionado]
Publicado por: darmorir en 10 Noviembre 2014, 16:40 pm
Gracias  por responder :)
Ya lo he solucionado poniendo getContentPane() antes del getComponents() y simplifique un poco el codigo, me ha quedado así

Código:
 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;
    }