JOptionPane com JPasswordField


Você já deve conhecer a classe JOptionPane, ela fornece alguns recursos uteis para exibir mensagens para o usuário, seu método showInputDialog(…) é muito útil para solicitar a entrada de dados pelo usuário, no entanto não é recomendado seu uso para solicitar senhas  pois o valor digitado é exibido como texto puro.
É possível exibir um componente JPasswordField() utilizando a classe JOptionPane e então recuperá-lo posteriormente, veja como:

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;

/**
* Demonstra como utilizar um JOptionPane.showConfirmDialog para requisitar senhas do usuário
* @author Eduardo Costa - www.dimensaotech.com
*
*/
public class JOptionPassword {

static String SENHA = "123";
public static void main(String args[])
{
//Criar a mensagem sera exibida
JLabel label = new JLabel("Digite a senha:");
//criar o componente grafico que recebera o que for digitado
JPasswordField jpf = new JPasswordField();
//Exibir a janela para o usuario
JOptionPane.showConfirmDialog(null,
new Object[]{label, jpf}, "Senha:",
JOptionPane.OK_CANCEL_OPTION,JOptionPane.PLAIN_MESSAGE);

//Pegamos o que foi digitado e comparamos com a senha correta
String senhaDigitada = new String(jpf.getPassword());
if (SENHA.equals(senhaDigitada))
System.out.println("Senha correta");
else
System.out.println("Senha incorreta");

}
}

Quando a janela é exibida o foco não é carregado diretamente dentro do JPasswordField, veja como contornar este problema aqui.

Últimos 5 artigos de Eduardo Costa

Sobre Eduardo Costa

De Campinas-SP, bacharel em Sistema de Informação pela Anhanguera Educacional e pós graduado no curso de MBA em Gestão de Projetos e Metodologia do Ensino Superior. Atualmente trabalha como arquiteto e desenvolvedor Java em empresa de desenvolvimento de software de suporte a tomada de decisão, além de ministrar aulas de Orientação a Objeto, Linguagem Java e XML. Já atuou como líder técnico, coordenador de produto e analista de negócios.

Deixe uma resposta