Cómo
hacer el diálogo usuario
y
contraseña en Java
Toda aplicación debe contar con una función que permita ingresar con seguridad al sistema y cuidar de que usuarios no autorizados puedan ingresar a la misma. Por eso es típico implementar la muy conocida caja de diálogo donde se exija ingresar con un usuario y contraseña.
En esta sección se ilustrará con detalle cómo construir una ventana o caja de diálogo donde el usuario deba colocar su nombre de usuario y una contraseña para poder ingresar al sistema.
Para mostrar en pantalla la ventana o diálogo, como se muestra en la figura mostrada abajo, es necesario construir una clase llamada "Password.java" y utilizar algunos métodos como setBounds, setResizable y setLayout.
setResizable: Para manejar si la ventana se puede maximizar o no.
setBounds (x,y,Largo,Ancho): Para ubicar los elementos en el formulario.
setLayout: Para anular el gestor de diseño por defecto.
Password.java
//***************************************************************************************
//**** Universidad Nacional Sistema de Inscripción Regular (UNSIR
3.0.0) ****
//****
****
//**** CLASE: Password (Para crear el diálogo que sirve para ingresar
usuario y ****
//**** contraseña de acceso)
****
//**** ****
//**** AUTOR: CARLOS CÓRDOVA - CC DESARROLLO DE SOFTWARE 2007-2024 ****
//***************************************************************************************
//***************************************************************************************
// Paquetes de la librería estándar de clases de Java que se usarán en
esta clase
//***************************************************************************************
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//***************************************************************************************
// Inicio Clase Password (Clase principal)
//***************************************************************************************
public
class Password extends JFrame implements ActionListener
{
//*** Se asigna a la variable
curDir la ruta actual de nuestra carpeta de trabajo
String curDir =
System.getProperty("user.dir");
ImageIcon imagen = new
ImageIcon(curDir+"/Usuarios.gif");
//*** Se asignan a los objetos la imagen, etiquetas, cajas de texto y botones
JLabel EtiquetaInUsuario = new JLabel("Usuario :");
static TextField CajaTextoInUsuario = new
TextField(11);
JLabel EtiquetaInContrasena = new JLabel("Contraseña :");
static TextField CajaTextoInContrasena = new
TextField(11);
JButton BotonAceptar = new JButton("Aceptar");
JButton BotonCancelar = new
JButton("Cancelar");
//*** Se define el método principal "main" de la Clase Password
//*** Se define el aspecto
de ventanas propio del sistema operativo (windows, Mac, Linux, etc.)
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e)
{
e.printStackTrace();
}
new Password();
}
{
//*** Se define el título y
tamaño de la ventana
setTitle("Usuario y contraseña");
setBounds( 0, 0, 280, 210 );
setResizable(false);
//*** Se cambia el icono de la ventana por el archivo "UN.gif" que está en nuestra carpeta de trabajo
setIconImage (new ImageIcon(curDir+"/UN.gif").getImage());
//*** y botones del diálogo
o ventana
CajaTextoInUsuario.setText("");
CajaTextoInContrasena.setEchoChar('*');
BotonAceptar.setToolTipText("Ingresar usuario...");
BotonCancelar.setToolTipText("Cancelar y salir");
// 2.- Ubicar el elemento
-> elemento.setBounds (x,y,a,b)
// 3.- Agregar al formulario
o dialogo el elemento -> add.(elemento)
//*** Anulamos el Gestor de Diseño
setLayout(null);
add(EtiquetaImagen);
add(EtiquetaInUsuario);
add(CajaTextoInUsuario);
add(EtiquetaInContrasena);
add(CajaTextoInContrasena);
add(BotonAceptar);
add(BotonCancelar);
Dimension pantalla, cuadro;
pantalla =
Toolkit.getDefaultToolkit().getScreenSize();cuadro = this.getSize();
this.setLocation(((pantalla.width -
cuadro.width)/2),(pantalla.height - cuadro.height)/2);
setVisible(true);
//*** Eventos producidos por los botones de la ventana
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent
e)
{
//*** Se ejecuta el
método CierraVentana
CierraVentana();
}
});
{
public void actionPerformed(ActionEvent
evt)
{
//*** Aquí se coloca la
función que produzca el evento luego de pulsar el botón
"Aceptar"
}
});
{
public void actionPerformed(ActionEvent
evt)
{
//*** Se ejecuta el
método CierraVentana
CierraVentana();
}
});
}
{
Object s = e.getSource();
}
{
JRootPane rootPane = new JRootPane();
KeyStroke stroke1 =
KeyStroke.getKeyStroke("ESCAPE");
KeyStroke stroke2 =
KeyStroke.getKeyStroke("ENTER");
//*** Acción para cerrar la ventana pulsando la tecla "ESC"
{
public void actionPerformed(ActionEvent
actionEvent)
{
CierraVentana();
}
} ;
InputMap inputMap =
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap.put(stroke1,
"ESCAPE");
rootPane.getActionMap().put("ESCAPE", SalirEscape);
{
public void actionPerformed(ActionEvent
actionEvent)
{
if(getFocusOwner() instanceof
JButton)
{
Component boton =
getFocusOwner();
((JButton)boton).doClick();
}
else if(getFocusOwner() instanceof
TextField)
{
getFocusOwner().transferFocus();
}
}
} ;
InputMap inputMap2 =
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
inputMap2.put(stroke2,
"ENTER");
rootPane.getActionMap().put("ENTER", EnterFoco);
return rootPane;
}
{
setVisible(false);
dispose();
System.exit(0);
}
}
//***************************************************************************************
// Fin Clase Password (Clase principal)
//***************************************************************************************
Al compilar y
ejecutar esta clase en Java, se mostrará por pantalla lo siguiente: