sábado, 19 de enero de 2013
Java: Swing: JPasswordField
Francisco
8:40
gui
,
input
,
java
,
jframe
,
jlabel
,
jtextfield
,
por: Francisco Vargas
,
programación java
,
swing
,
ventanas java
9 comentarios
:
Introducción
Desarrollo
Importamos la librería necesaria para utilizar el JPasswordField:
Luego procedemos a crear nuestro método, el ejemplo que daré es de un Login o un área donde colocamos usuario y contraseña para ingresar a una cuenta.
Y con ese método creamos nuestro campo para una contraseña, coloqué un símbolo “mas” ( + ) solo para el ejemplo y para que se conozca el método para cambiar el símbolo pero esa característica es opcional, me gustan más los puntos tradicionales. Bueno luego creamos los JLabel y el JTextField para hacer nuestra ventana de “ingresar” y mi clase final quedaría así:
Como nota, también se puede agregar a un JOptionPane, elementos como paneles, labels, entre otros, acá les dejo un ejemplo para un JOptionPane tipo password.
Documentación: http://docs.oracle.com/javase/8/docs/api/javax/swing/JPasswordField.html
Conclusiones
No mostrar información sensible es un método para salvaguardar a los usuarios que utilicen la aplicación.
Tampoco es bueno exagerar y colocar todo con este tipo de elemento.
import javax.swing.JPasswordField;
Luego procedemos a crear nuestro método, el ejemplo que daré es de un Login o un área donde colocamos usuario y contraseña para ingresar a una cuenta.
// Espacio para ingresar la contraseña private JPasswordField jpfContrasenia() { // Se inicializa el Objeto JPasswordField contrasenia = new JPasswordField(); // Asignamos posición y tamaño contrasenia.setBounds(200, 80, 150, 20); // Colocamos un símbolo personalizado(opcional) // Si no lo colocamos aparecen los puntitos predeterminados contrasenia.setEchoChar('+'); // Le asignamos un texto emergente cuando nos posamos encima del objeto contrasenia.setToolTipText("Ingrese Contraseña"); return contrasenia; }
Y con ese método creamos nuestro campo para una contraseña, coloqué un símbolo “mas” ( + ) solo para el ejemplo y para que se conozca el método para cambiar el símbolo pero esa característica es opcional, me gustan más los puntos tradicionales. Bueno luego creamos los JLabel y el JTextField para hacer nuestra ventana de “ingresar” y mi clase final quedaría así:
import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JTextField; @SuppressWarnings("serial") public class Password extends JFrame { public Password() { add(ingresarUsuario()); add(ingresarContrasenia()); add(jtaUsuario()); add(jpfContrasenia()); inicializador(); } // Inicializador de la Ventana private void inicializador() { setSize(400, 200); setLayout(null); setTitle("Login"); setLocationRelativeTo(null); setVisible(true); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); } // Texto que indica donde va el nombre de Usuario private JLabel ingresarUsuario() { JLabel usuario = new JLabel("Nombre de Usuario: "); usuario.setBounds(30, 30, 200, 20); return usuario; } // Texto que indica donde va la contraña private JLabel ingresarContrasenia() { JLabel contrasenia = new JLabel("Contrasenia: "); contrasenia.setBounds(30, 80, 200, 20); return contrasenia; } // Espacio para ingresar el nombre de usuario private JTextField jtaUsuario() { JTextField usuario = new JTextField(); usuario.setBounds(200, 30, 150, 20); usuario.setToolTipText("Ingrese Nombre de Usuario"); return usuario; } // Espacio para ingresar la contraseña private JPasswordField jpfContrasenia() { // Se inicializa el Objeto JPasswordField contrasenia = new JPasswordField(); // Asignamos posición y tamaño contrasenia.setBounds(200, 80, 150, 20); // Colocamos un símbolo personalizado(opcional) contrasenia.setEchoChar('-'); // Le asignamos un texto emergente cuando nos posamos encima del objeto contrasenia.setToolTipText("Ingrese Contraseña"); return contrasenia; } public static void main(String[] args) { new Password(); } }
Como nota, también se puede agregar a un JOptionPane, elementos como paneles, labels, entre otros, acá les dejo un ejemplo para un JOptionPane tipo password.
// Objeto que hará que aparezcan los puntitos en la contraseña en vez de // los caracteres ingresados JPasswordField pwd = new JPasswordField(); // Primero null, luego pwd que es nuestro objeto jpassfield acá // puedes colocar paneles, label entre otros objetos, nombre del // titulo de la ventana, tipo de botones, sin icono JOptionPane.showConfirmDialog(null, pwd, "Enter Password",JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
Documentación: http://docs.oracle.com/javase/8/docs/api/javax/swing/JPasswordField.html
Conclusiones
No mostrar información sensible es un método para salvaguardar a los usuarios que utilicen la aplicación.
Tampoco es bueno exagerar y colocar todo con este tipo de elemento.
Suscribirse a:
Enviar comentarios
(
Atom
)
Amigo no entiendo bien esto y lo necesito urgente para un proyecto. yo solo necesito q me lea la contraseña y salga con asteriscos, sin usuario ni nada de eso. me podrias dar el codigo solo para la contraseña? y me dices q es lo q tengo que crear en metodo y que es lo que va en el main? mira mi proyecto empieza asi:
ResponderEliminardo{
clave=Integer.parseInt(JOptionPane.showInputDialog("Ingrese la contraseña del programa"));
if(clave!=333){
errores=errores+1;
JOptionPane.showMessageDialog(null, "Contraseña invalida", "Mensaje", JOptionPane.ERROR_MESSAGE, null);
}
if(errores==3){
JOptionPane.showMessageDialog(null, "Cantidad maxima de intentos, Intente mas tarde");
System.exit(0);
}
}while(clave!=333);
if(clave==333){
JOptionPane.showMessageDialog(null, "Bienvenido!)
}
/* Contador de Errores */
Eliminarint errores = 0;
/* Variable que guardará el valor de la clave ingresada */
int clave = 0;
/*
* Objeto que hará que aparescan los puntitos en la contraseña en vez de
* los caracteres ingresados
*/
JPasswordField pwd = new JPasswordField();
do {
/*
* Primero null, luego pwd que es nuestro objeto jpassfield acá
* puedes colocar paneles, label entre otros objetos, nombre del
* titulo de la ventana, tipo de botones, sin icono
*/
JOptionPane.showConfirmDialog(null, pwd, "Enter Password",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
/*
* Se obtiene el valor del objeto jpassfield y se compara con tu
* contraseña
*/
if (!pwd.getText().equals("333")) {
errores = errores + 1;
JOptionPane.showMessageDialog(null, "Contraseña invalida",
"Mensaje", JOptionPane.ERROR_MESSAGE, null);
/*se limpia el campo donde se escribe*/
pwd.setText("");
}
if (errores == 3) {
JOptionPane.showMessageDialog(null,
"Cantidad maxima de intentos, Intente mas tarde");
System.exit(0);
}
} while (!pwd.getText().equals("333"));
/*Si sale del do-while es porque es igual a 333 por tanto no ocupa un if
* de validación*/
JOptionPane.showMessageDialog(null, "Bienvenido!");
Este comentario ha sido eliminado por el autor.
EliminarAmigo muchas gracias! me sirvió de maravilla. me podes dar tu facebook, skype o donde te conectes? sos el unico que sabe explicar bien las cosas, en ninguna pagina entiendo nada
ResponderEliminarSe te agradecen esas palabras :D eso lo motiva a uno, y ya entendiste para que servía lo del if?? como borraste la pregunta, y que tal si tu me pasas tu facebook o skype y yo te agrego vale?
EliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarSi justamente
EliminarHola, porfa necesito ayuda. Estoy haciendo un programa que es un juego, pero necesito que un player ingrese un numero y este no se vea. como lo puedo hacer? a la vez este numero lo tengo que ocupar despues. Ayuda porfa
ResponderEliminarQue no sea vea el numero como tal, osea, que yo aprete por ejemplo el numero uno y que no me cuenta si en verdad lo escribí o no?
Eliminar