En algunos sistemas a veces un requerimiento es que se manejen prinvilegios y por lo tanto usuarios, este es un ejemplo muy sencillo que muestra como se podria autentificar a los usuarios para entrar al sistema. Sin mas rodeos muestro el ejemplo y espero que a alguien mas le sirva, primero que nada quiero mostrar la estructura de la tabla que se usa en este programa.
Aca la imagen:
Estructura de tabla de usuarios
Aca la imagen de la ventana de login, obviamente el usuario escribe su nombre de usuario (previamente asignado por el administrador del sistema) y su password. y debe dar click en el boton aceptar para entrar:
Ventana de login
en caso de que el usuario haya introducido algun dato incorrecto se mostrara un mensaje avisando, igualmente se mostrara un mensaje correspondiente cuando se deje algun campo vacio:
Mensaje error ventana login
en caso de que el usuario escriba los datos correctos se debe mostrar la interfaz principal del sistema, que en este caso e diseñado una muy sencilla y es esta:
Ventana principal del sistema
Por ultimo muestro el codigo de de la ventana de login
VentanaLogin.java
// Instituto Tecnologico de Zacatepec
// Descripcion: Ventana de login para autenticar un usuario para accesar a un sistema
// Author: Gonzalo Silverio gonzasilve@hotmail.com
// Archivo: VentanaLogin.java
package testmysql;
import javax.swing.*;
import java.io.*;
import java.sql.*;
import java.awt.Panel.*;
import java.awt.*;
import java.awt.event.*;
public class VentanaLogin extends JFrame
{
private JTextField txtUser, txtPass;
private JLabel lblUser, lblPass;
private JButton btnAceptar, btnCancelar;
String usuario, elPassword;
VentanaLogin()
{
Container contenedor = getContentPane();
contenedor.setLayout(new FlowLayout());
// crear etiqueta y cuadro de texxto del usuario
txtUser = new JTextField(10);
lblUser = new JLabel("Usuario: ");
txtUser.setToolTipText("Escriba su nombre de usuario");
contenedor.add( Box.createVerticalStrut(50) );
contenedor.add(lblUser);
contenedor.add(txtUser);
//crear etiqueta y cuadro de texxto del pw
txtPass = new JPasswordField(10);
lblPass = new JLabel("Contraseña: ");
txtPass.setToolTipText("Escriba su contraseña");
contenedor.add(lblPass);
contenedor.add(txtPass);
//Crear y agregar los botones
btnAceptar = new JButton("Aceptar");
//establecer Boton aceptar por defecto
getRootPane().setDefaultButton(btnAceptar);
btnCancelar = new JButton("Cancelar");
contenedor.add(btnAceptar);
contenedor.add(btnCancelar);
// Crear un escuchador al boton Aceptar
ActionListener escuchadorbtnAceptar = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
try
{
//chekar si el usuario escrbio el nombre de usuario y pw
if (txtUser.getText().length() > 0 && txtPass.getText().length() > 0 )
{
// Si el usuario si fue validado correctamente
if( validarUsuario( txtUser.getText(), txtPass.getText() ) ) //enviar datos a validar
{
// Codigo para mostrar la ventana principal
setVisible(false);
VentanaPrincipal ventana1 = new VentanaPrincipal();
ventana1.mostrar();
}
else
{
JOptionPane.showMessageDialog(null, "El nombre de usuario y/o contrasenia no son validos.");
JOptionPane.showMessageDialog(null, txtUser.getText()+" " +txtPass.getText() );
txtUser.setText(""); //limpiar campos
txtPass.setText("");
txtUser.requestFocusInWindow();
}
}
else
{
JOptionPane.showMessageDialog(null, "Debe escribir nombre de usuario y contrasenia.\n" +
"NO puede dejar ningun campo vacio");
}
} catch (Exception e)
{
e.printStackTrace();
}
}
};
btnAceptar.addActionListener(escuchadorbtnAceptar); // Asociar escuchador para el boton Aceptar
// Agregar escuchador al boton Cancelar
ActionListener escuchadorbtnCancelar=new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
System.exit(0); // terminar el programa
}
};
btnCancelar.addActionListener(escuchadorbtnCancelar); // Asociar escuchador para el boton Cancelar
setTitle("Autentificacion de usuarios");
setSize(400,150); // Tamanio del Frame
setResizable(false); // que no se le pueda cambiar el tamanio
//Centrar la ventana de autentificacion en la pantalla
Dimension tamFrame=this.getSize();//para obtener las dimensiones del frame
Dimension tamPantalla=Toolkit.getDefaultToolkit().getScreenSize(); //para obtener el tamanio de la pantalla
setLocation((tamPantalla.width-tamFrame.width)/2, (tamPantalla.height-tamFrame.height)/2); //para posicionar
setVisible(true); // Hacer visible al frame
} // fin de constructor
// Metodo que conecta con el servidor MYSQL y valida los usuarios
boolean validarUsuario(String elUsr, String elPw) throws IOException
{
try
{
//nombre de la BD: bdlogin
//nombre de la tabla: usuarios
// id integer auto_increment not null <--llave primaria
// campos: usuario char(25)
// password char(50)
Connection unaConexion = DriverManager.getConnection ("jdbc:mysql://localhost/bdlogin","root", "root");
// Preparamos la consulta
Statement instruccionSQL = unaConexion.createStatement();
ResultSet resultadosConsulta = instruccionSQL.executeQuery ("SELECT * FROM usuarios WHERE usuario='"+elUsr+"' AND password='"+ elPw+"'");
if( resultadosConsulta.first() ) // si es valido el primer reg. hay una fila, tons el usuario y su pw existen
return true; //usuario validado correctamente
else
return false; //usuario validado incorrectamente
} catch (Exception e)
{
e.printStackTrace();
return false;
}
}
public static void main(String[] args)
{
VentanaLogin prueba = new VentanaLogin();
prueba.setDefaultCloseOperation(prueba.EXIT_ON_CLOSE);
}
}
y ahora el codigo fuente para crear la ventana principal:
// Instituto Tecnologico de Zacatepec
// Descripcion: Ventana principal del sistema del sistema
// Author: Gonzalo Silverio gonzasilve@hotmail.com
// Archivo: VentanaPrincipal.java
package testmysql;
import javax.swing.*;
import java.awt.*;
public class VentanaPrincipal extends JFrame
{
VentanaPrincipal()
{
setSize(400,400);
setTitle("ventana principal");
setLayout(new BorderLayout());
add(Box.createHorizontalStrut(100),BorderLayout.WEST);
add(new JLabel("Ventana principal del proyecto "),BorderLayout.CENTER);
setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mostrar()
{
setVisible(true);
}
}
…bueno hasta pronto y espero te sirva de algo esta cosa ( xD ), comentarios son bienvenidos o si quieres el codigo, ya sabes, basta con dejar tu correo
Comentarios recientes