Aquí hay un código Java de ejemplo que muestra cómo crear un cuadro de diálogo de contraseña. Este programa utiliza una combinación de JOptionPane
clase y el JPasswordField
clase.
Cuando este programa se ejecuta un JOptionPane
se muestra con un JPasswordField
, un JTextField
, un botón Aceptar y Cancelar. los JFrame
detrás de la JOptionPane
utiliza un área de texto para proporcionar comentarios sobre la entrada que el usuario ha realizado y qué botones se han presionado.
El artículo relacionado con este código es Cómo crear un cuadro de diálogo de contraseña. Además, eche un vistazo a JPasswordField Overview si desea obtener información más específica sobre JPasswordField
clase.
Nota:Para que este programa Java funcione, debe guardarse en un archivo llamado PasswordDialog.java
// Las importaciones se enumeran en su totalidad para mostrar lo que se está utilizando // podría importar javax.swing. * Y java.awt. * Etc ... import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.JTextArea; import javax.swing.JPasswordField; import javax.swing.JPanel; import javax.swing.JLabel; import java.awt.GridLayout; import java.util.Arrays; import java.awt.EventQueue; public class PasswordDialog // Nota: Normalmente, el método principal estará en una // clase separada. Como este es un ejemplo simple de una clase // todo está en una clase. public static void main (String [] args) // Usa el hilo de despacho de eventos para los componentes Swing EventQueue.invokeLater (new Runnable () @Override public void run () createGuiFrame ();); // maneja la creación de JFrame y // todos sus componentes privados estáticos void createGuiFrame () JFrame guiFrame = new JFrame (); // asegúrese de que el programa salga cuando el marco se cierre guiFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); guiFrame.setTitle ("Ejemplo de cuadro de diálogo"); guiFrame.setSize (500,300); // Esto centrará el JFrame en el medio de la pantalla guiFrame.setLocationRelativeTo (null); guiFrame.setVisible (verdadero); // Usando un JTextArea para mostrar comentarios // (es decir, el nombre de usuario y la contraseña ingresados JTextArea tracker = new JTextArea ("Password Tracker:"); guiFrame.add (tracker); // Usando un JPanel como mensaje para el JOptionPane JPanel userPanel = new JPanel (); userPanel.setLayout (new GridLayout (2,2)); JLabel usernameLbl = new JLabel ("Nombre de usuario:"); JLabel passwordLbl = new JLabel ("Password:"); JTextField username = new JTextField ( ); JPasswordField passwordFld = new JPasswordField (); userPanel.add (usernameLbl); userPanel.add (username); userPanel.add (passwordLbl); userPanel.add (passwordFld); // Como JOptionPane acepta un objeto como mensaje / / nos permite usar cualquier componente que nos guste, en este caso // un JPanel que contiene los componentes de diálogo que queremos int input = JOptionPane.showConfirmDialog (guiFrame, userPanel, "Ingrese su contraseña:", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) ; char [] correctPassword = 'a', 'P', 'a', 'S', 's', 'W', 'o', 'R', 'd'; if (input == 0 ) // Botón OK = 0 trac ker.append ("\ nEl nombre de usuario ingresado fue:" + username.getText ()); // Recuperar contraseña char [] enterPassword = passwordFld.getPassword (); tracker.append ("\ nLa contraseña ingresada fue:" + String.valueOf (ingresó Contraseña)); if (Arrays.equals (correctPassword, enterPassword)) tracker.append ("\ n¡La contraseña ingresada es correcta!"); else tracker.append ("\ nSeguridad de llamadas: ¡es un impostor!"); // Nota: la mejor práctica es poner a cero la matriz // que contiene la contraseña. (Es un poco tonto // mientras imprimo la contraseña para mostrar cómo se recupera // pero tenlo en cuenta cuando utilices JPasswordFields). Arrays.fill (ingresó Contraseña, '0'); else // se ha presionado el botón cancelar o la 'x' // tracker.append ("\ nDialog cancelado ...");