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