Hibernate Swing Login para sistema de facturación | Java

Para el login de un sistema necesitamos crear un JFrame que va a tener campos como el nombre de usuario y contraseña, además de un botón que se encargará de conectar el controlador para comprobar las credenciales.

Login JFrame
El diseño puede variar dependiendo de gustos y que tanto tiempo le dedicas a perfeccionar ciertos detalles, tu puedes realizar el diseño con WindowBuilder un plugin de Eclipse IDE.
Login JFrame Design
Y como vemos es fácil crear el diseño, ahora toca hacer que funcione para enviar datos a nuestro controlador, en la imagen se ve que está como <dynamic> algunos JLabels, es porque se ha asignado un String obtenido de un paquete de recursos denominado Bundle, tu puedes verlo haciendo click aquí.

Ahora vamos a ver el constructor de LoginFrame.java
public class LoginFrame extends JFrame {

    private static final long serialVersionUID = 1L;

    private ResourceBundle bundle;

    private MessageUtil messageUtil;
    private ValidateData validateData;
    private UserController userController;
    
    public LoginFrame() {
        bundle = ResourceBundle.getBundle("com/abigsite/facturationsystem/bundle/Bundle");
        messageUtil = new MessageUtil();
        validateData = new ValidateData();
        userController = new UserController();
        initComponents();
    }
}
En el código anterior simplemente inicializamos variables, bundle se usa para gestionar una aplicación multilenguaje; messageUtil se encarga de abrir un JOptionPane mostrándonos el error solamente mandando un String como parámetro; validateData se encarga de validar datos como campos vacíos, longitud de cadenas, validación de contraseñas, entre otros que pueden agregar según necesiten en su software; userController es el controlador de usuario donde enviaremos datos desde la interfaz para persistir o comprobar datos en la base; el método initComponents es simplemente la construcción de la interfaz que pueden hacerlo desde WindowBuilder.

Ahora veamos como asignarle un String para que varíe dependiendo del idioma aun JLabel como aparece en la segunda imagen a que sea dinámico.
JLabel lblUser = new JLabel(bundle.getString("usernameLabel"));
Ahora nuestro JLabel es dinámico y mostrará el texto en el idioma que deseemos o tengamos declarados en nuestros paquetes de recursos (con JButton funciona de la misma manera), bundle es la variable que declaramos en el constructor. Si deseas saber más de paquetes de recursos haz click aquí.

Ahora vemos el método login() que se ejecutará al presionar el botón.
    private void login() {
        if (isCorrectData()) {
            if (userController.login(txtUsername.getText().trim(), pwdUserPassword.getPassword())) {
                openMainFrame();
                dispose();
            } else {
                pwdUserPassword.setText("");
                txtUsername.requestFocus();
                messageUtil.errorMessage(bundle.getString("userOrPasswordErrorMessage"));
            }
        }
    }
En este último método es el encargado de enviar los datos de los campos requeridos al controlador para que este a su vez se conecte con una clase DAO y empiece a verificar si existe el usuario y si es así procede a verificar la contraseña.

Existe una función llamada isCorrectData() que simplemente verifica que los campos no estén vacíos y la longitud mínima de la cadena de cada campo para evitar que se este verificando en la base de datos cadenas de texto vacías.

← Anterior

Siguiente →

Comentarios

Entradas populares