Tengo una ventana tipica de alta usuario con sus correspondientes campos nombre, dni, email y contraseña, lo que no consigo es que me saque un error cuando dejo algun campo vacio de manera que no me permita registrarme si no he introducido todos los campos aunque sea con datos estupidos
Es realmente sencillo, hay diversas formas de validar datos, aquí te pongo un ejemplo:
public class RegistrarClienteControl {
final RegistrarClienteGUI GUI;
public RegistrarClienteControl(RegistrarClienteGUI referencia) {
gui = referencia;
}
public boolean validar
(TextField...
campos) { boolean validacion_ok = true;
boolean campos_vacios = false;
if(txt.getText().isEmpty) {
validacion_ok = false;
campos_vacios = true;
break;
}
}
if(campos_vacios)
JOptionPane.
showMessageDialog(GUI,
"No deje campos vacíos."); else if( !isNumeric(GUI.txtTelefono.getText()) )
JOptionPane.
showMessageDialog(GUI,
"Algunos campos deben ser numéricos.");
return validacion_ok;
}
public void guardarCliente() {
boolean exito = validar(GUI.txtNombre, GUI.txtApellido, GUI.txtDireccion, GUI.txtEmail, GUI.txtTelefono);
if(exito) {
// aqui guardas los datos
}
}
private boolean isNumeric
(String posbl_num
) { try {
return true;
return false;
}
}
} // FIN
La otra duda que tengo esque tengo almacenados en un Hashmap a los usuarios que se van registrado, en el momento del login nose como hacer para que te valide las 2 cosas de manera que si encuentra el usuario sepa ya su contraseña y me pueda validar ambos campos.
Cuando se ingrese el usuario y contraseña en el login, en primer lugar debes extraer esos datos. Luego, buscas el usuario en el HashMap, si lo encuentra procedes a comparar las contraseñas.
public class ValidacionLogin {
private boolean usuario_existe
(String usuario
) { if(listaUsuarios.containsKey(usuario))
return true;
else
return false;
}
private boolean validar_password
(String usuario,
String password_ingresado
) { String password
= listaUsuarios.
get(usuario
); if(password.equals(password_ingresado))
return true;
else
return false;
}
public void validar_login() {
String usuario
= txtUsuario.
getText(); String password
= txtPassword.
getText(); boolean exito = false;
if(usuario_existe(usuario)) {
if(validar_password(password))
ingresar();
else
JOptionPane.
showMessageDialog(GUI,
"El password ingresado es incorrecto."); }
else
JOptionPane.
showMessageDialog(GUI,
"Usuario no existe."); }
public void ingresar() {
// codigo para redireccionar a la pagina del cliente
}
} // FIN
Yo te recomendaría que crees una entidad (bean) que represente a los clientes para que guardes los datos en un objeto Cliente. Te pongo un ejemplo:
public class Cliente {
private int telefono;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.email = email;
this.telefono = telefono;
}
return this.nombre;
}
public void setNombre
(String nombre
) { this.nombre = nombre;
}
return this.apellido;
}
public void setApellido
(String apellido
) { this.apellido = apellido;
}
public String getDireccion
() { return this.direccion;
}
public void setDireccion
(String direccion
) { this.direccion = direccion;
}
return this.email;
}
public void setEmail
(String email
) { this.email = email;
}
public int getTelefono() {
return this.telefono;
}
public void setTelefono(int telefono) {
this.telefono = telefono;
}
} // FIN
Entonces, para registrar al cliente lo haríamos así:
public class RegistrarClienteControl {
final RegistrarClienteGUI GUI;
List<Cliente> listaClientes = new ArrayList<>(); // aqui se guardaran los clientes
public RegistrarClienteControl(RegistrarClienteGUI referencia) {
gui = referencia;
}
public boolean validar
(TextField...
campos) { boolean validacion_ok = true;
boolean campos_vacios = false;
if(txt.getText().isEmpty) {
validacion_ok = false;
campos_vacios = true;
break;
}
}
if(campos_vacios)
JOptionPane.
showMessageDialog(GUI,
"No deje campos vacíos."); else if( !isNumeric(GUI.txtTelefono.getText()) )
JOptionPane.
showMessageDialog(GUI,
"Algunos campos deben ser numéricos.");
return validacion_ok;
}
public void guardarCliente() {
boolean exito = validar(GUI.txtNombre, GUI.txtApellido, GUI.txtDireccion, GUI.txtEmail, GUI.txtTelefono);
if(exito) {
String nombre
= GUI.
txtNombre.
getText(); String apellido
= GUI.
txtApellido.
getText(); String direccion
= GUI.
txtDireccion.
getText(); String email
= GUI.
txtEmail.
getText(); int telefono
= Integer.
parseInt(GUI.
txtTelefono.
getText()); listaClientes.add(new Cliente(nombre, apellido, direccion, email, telefono));
}
}
private boolean isNumeric
(String posbl_num
) { try {
return true;
return false;
}
}
} // FIN
Ahora, para validar el login, haríamos lo siguiente:
public class validacionLogin {
private boolean usuario_existe
(String usuario
) { boolean existe = false;
for(Usuarios u : listaUsuarios) {
if (u.getUsuario().equals(usuario))
existe = true;
break;
}
return existe;
}
private boolean validar_password
(String usuario,
String password_ingresado
) { String password
= listaUsuarios.
get(usuario
); boolean success = false;
for(Usuarios u : listaUsuarios) {
if (u.getUsuario().equals(usuario)) {
String password
= u.
getPassword(); if(password.equals(password_ingresado))
success = true;
}
}
}
public void validar_login() {
String usuario
= txtUsuario.
getText(); String password
= txtPassword.
getText();
if(usuario_existe(usuario)) {
if(validar_password(password))
ingresar();
else
JOptionPane.
showMessageDialog(GUI,
"El password ingresado es incorrecto."); }
else
JOptionPane.
showMessageDialog(GUI,
"Usuario no existe."); }
public void ingresar() {
// codigo para redireccionar a la pagina del cliente
}
} // FIN
Trabajar con entidades (beans) es muy importante en el desarrollo de aplicaciones Java. Recuerda, Java es un lenguaje casi total orientado a objetos, por lo que hay que aprovechar las ventajas que ésto nos trae.
Un saludo.