Ir al contenido


Foto

Validación de formulario


  • Por favor identifícate para responder
3 respuestas en este tema

#1 kano

kano

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 10 mayo 2012 - 07:27

Olas
Tengo un formulario echo en java están validados  de que no puedan estar vacíos asta aquí todo bien, pero si quiero validar que la contraseña ingresada sea igual a la repetición de la contraseña no da miren este código y me dicen el error


[java]  if (Nombres.getText().equals("") && Ndocumento.getText().equals("") && Barrio.getSelectedItem().equals("Seleccione") && Municipio.getSelectedItem().equals("Seleccione")  &&  TipoId.getSelectedItem().equals("Seleccione") && Telefono.getText().equals("")  &&  Apellidos.getText().equals("") &&  Usuario.getText().equals("") &&  Contra.getText().equals("") &&  Contra2.getText().equals("")    ||  Nombres.getText().equals("") || Telefono.getText().equals("")  || Ndocumento.getText().equals("") || Apellidos.getText().equals("")  ||  Municipio.getSelectedItem().equals("Seleccione")  || TipoId.getSelectedItem().equals("Seleccione") || Barrio.getSelectedItem().equals("Seleccione") ||  Usuario.getText().equals("") ||  Contra.getText().equals("") ||  Contra2.getText().equals("")) {
        JOptionPane.showMessageDialog(this,"Faltan datos obligatorios por ingresar","Error",JOptionPane.ERROR_MESSAGE);
        if (Contra.getText()!=Contra2.getText()) {
           
        JOptionPane.showMessageDialog(this,"La contraseña no coincide","Error",JOptionPane.ERROR_MESSAGE);
       
         
        } else {
              MetodosConsultas metodo = new MetodosConsultas();
            metodo.insertar(TipoId.getSelectedIndex(),Integer.parseInt(Ndocumento.getText()),Nombres.getText(),Apellidos.getText(),Integer.parseInt(Telefono.getText()),Municipio.getSelectedIndex(),Barrio.getSelectedIndex());
        }
    } else  {
              MetodosConsultas metodo = new MetodosConsultas();
            metodo.insertar(TipoId.getSelectedIndex(),Integer.parseInt(Ndocumento.getText()),Nombres.getText(),Apellidos.getText(),Integer.parseInt(Telefono.getText()),Municipio.getSelectedIndex(),Barrio.getSelectedIndex());
    }[/java]
  • 0

#2 HotaruV

HotaruV

    Member

  • Miembros
  • PipPip
  • 28 mensajes

Escrito 11 julio 2012 - 11:21

Hola... revise tu codigo y encontre el error.. en la sentancia if estas diciendo que si las cadenas son desiguales imprima el mensaje .... eso quiere decir que si son diferentes la condicion es verdadera... por lo que lo unico que te falla es la comparacion...  intenta poner == en vez de !=  esto hara que si escriben la misma contraseña la condicion sea falsa se salte el if y pase al else....

[java]
if (Contra.getText()==Contra2.getText()) {
      JOptionPane.showMessageDialog(this,"La contraseña no coincide","Error",JOptionPane.ERROR_MESSAGE);
} else {
MetodosConsultas metodo = new MetodosConsultas();
           
[/java]

otra cosita... los JOptionPane son muy escandalosos y a veces poco esteticos.. te recomiendo que en vez de eso los errores los pongas en un JLabel.. al lado del campo de texto que deseas verificar... y nada mas necesitas declarar un Jlabel para todos tus campos lo estancias alado del texto y eso  hara que se vea mas presentable tu formulario.. ojala te sirva... Saludos
  • 0

#3 HotaruV

HotaruV

    Member

  • Miembros
  • PipPip
  • 28 mensajes

Escrito 11 julio 2012 - 02:14

Hola de nuevo... en mi post anterior publique que debias hacer la comparacion utilizando el operacion de comparacion == lo que haciendo revisiones me di cuenta que tenia el mismo problema de que no validaba realmente que las cadenas sean iguales... bueno hice algunas pruebas con un pequeño script que realice para comparar las cadenas de caracteres y esto efectivamente no funciono... para comparar dos cadenas se debe de utilizar el metodo equals de la clase object... cuando la cadena viene de dos campos de texto distintos efectivamente su contenido se obtiene con el metodo getText.. entonces quedaria algo asi

[java]
if(obj1.getText().equals(obj2.getText())){
  //... Imprimo verdadero si ambas cadenas son iguales
}else{
  //.... falso si no lo son
[/java]

la clase equals tiene como parametro un object el cual devuelve un valor booleano true o false..... y hay que tomar en cuenta que la clase String es una variable por referencia y los operadores == y != sirven para comparar solamente datos primitivos osea int, float, char, etc, etc... String es un objeto y por eso no se puede comparar con los operadores logicos ..  (bueno si se puede pero tienes que sobreescribir el metodo equals =D)

tu script quedaria asi:
[java]
if (Contra.equals(getText(Contra2.getText())) {
          JOptionPane.showMessageDialog(this,"La contraseña no coincide","Error",JOptionPane.ERROR_MESSAGE);
        } else {
              MetodosConsultas metodo = new MetodosConsultas();
[/java]
Por cierto aunque los campos de pass esten vacios se toman encuenta como iguales ya que ambos no concientenen nada.. para eso debes de crear una variable booleana por ejemplo boolean validado.. y cuando termines de verificar que todos tus campos tengan infomacion al final debes de setear esta variable como true para que a la hora de hacer tu comparacion de pass no se envie el formulario con los passwords vacios ....  te muestro la prueba que hice.. (amm no acomode bien los componentes para que fuera rapido jejeje.. pero se entendera mejor lo que te estoy diciendo).

[java]
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

//nombre de la clase que extiende Jframe y implementa la interfas
//Action LIstener
public class ValidandoPassword extends JFrame implements ActionListener{
  //Declaro los atributos... primero los JPasswordField
  private JPasswordField pass1, pass2;
  //Declaro los paneles
  private JPanel panel1, panel2, panel3;
  //declaro etiquetas
  private JLabel lb1, lb2;
  //Declaro Boton
  private JButton val;
  //Declaro variable booleana que me servira para validar que todos los campos
  //contengan algo
  private boolean validado;
 
  //Constructor
  public ValidandoPassword(){
     
      //Nombre de la ventana
      super("Validacion de passwords ");
      //La aplicacion se cierra al presionar cerrar
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      //tamaño de la ventana
      setSize(400, 250);
      //la hago visible
      setVisible(true);
      //se coloca en medio de la pantalla
      setLocationRelativeTo(null);
      //Con esta opcion evito que se redimencione.. lo dejo inhabilitado
      //---  setResizable(false);
     
      //Añado un contendeor ammm no importa lo hice nada mas para que se viera el ejemplo
      Container contenedor = getContentPane();
      contenedor.setLayout(new GridLayout(1,2));
      panel1 = new JPanel();
      contenedor.add(panel1);
      panel2 = new JPanel();
      contenedor.add(panel2);
      panel3 = new JPanel();
      contenedor.add(panel3);
     
      //Estacio las etiquitas los campos de passwords y el boton
      lb1 = new JLabel();
      lb2 = new JLabel();
      pass1 = new JPasswordField(5);
      pass2 = new JPasswordField(5);
     
      val = new JButton("Validar");
     
      //Implmento el accion listener en esta clase y sobre escribo el metodo
      val.addActionListener(this);
     
     
      //Agrego todos los componentes al todos los paneles
      panel1.add(pass1);
      panel2.add(pass2);
     
     
      panel3.add(val);
     
      panel2.add(lb1);
      panel3.add(lb2);
  }
 

    //Metodo main
    public static void main(String[] args) {
        ValidandoPassword vp = new ValidandoPassword();
    }//temina metodo main
   
    //Inicio el accion event .. arriba antes implemente la interfaz ActionListener
    @Override
    public void actionPerformed(ActionEvent e) {
       
        //Verifico que los campos no esten vacios
        if(pass1.getText().equals("")&& pass2.getText().equals("")) {
            //Si no lo estan inicialicio la variable validado como true
            validado = true;
            //Hago visible la etiqueta2
            lb2.setVisible(true);
            //Me imprime campos vacios y el valor de la variable validado
            lb2.setText("Campos Vacios "+validado);
           
        }else{
            //si estan vacios validado se hace false
            validado = false;
            //desaparesco la etiqueta que dice que los campos estan vacios
            lb2.setVisible(false);
        }
        //Si pass 1 y pass1 son iguales y validado es diferente de true..
        if (pass1.getText().equals(pass2.getText())&& validado!=true){
            //Imprimo que son iguales y hago la etiqueta 1 visible
            lb1.setVisible(true);
            lb1.setText("Son Iguales");
        }else{
            //en caso contrario... imprimo en la etiquta 1 que no son iguales
            //y seteo pass1 y pass2 como vacias
            lb1.setText("No Son Iguales");
            pass1.setText("");
            pass2.setText("");
        }
       
       
    }
   
}

[/java]

Espero te sirva  :wink:
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 11 julio 2012 - 02:57

Excelente respuesta amigo HotaruV

Saludos
  • 0




IP.Board spam blocked by CleanTalk.