A classe JPasswordField, uma subclasse de JTextField, fornece campos de texto especializados para a entrada de senha. Por razões de segurança, um campo de senha não mostra os caracteres que o usuário digita. Em vez disso, o campo apresenta um outro caractere, como um asterisco ‘*’. Como outra medida de segurança, um campo de senha armazena o seu valor como um array de caracteres, e não como uma string.
JOptionPane
Torna mais fácil abrir uma caixa de diálogo padrão que solicita aos usuários para um valor ou informa os de algo.
ShowMessageDialog
Diz o usuário sobre algo que aconteceu.
Aspas Simples e Aspas Duplas
Em algumas linguagens de programação usa-se aspas simples para escrever textos literais para uma variável, outras linguagens usam aspas duplas. Em algumas linguagens modernas usa-se ambos os tipos de aspas. Em Java aspas duplas significam caracteres literais no formato String, aspas simples significam caracteres literais no formato Char. No exemplo abaixo a variável contendo a senha recuperada precisa ser uma array do tipo Char, tente colocar os caracteres em aspas duplas e verá o erro: String e Char não são tipos compatíveis, aspas simples transformam os literais em tipos Char suprimindo o erro do compilador.
Exemplo:
Neste exemplo criamos uma caixa de texto especifica para manipular senhas, e usamos seus recursos de validação para imprimir uma mensagem na tela para o usuário.
Java
import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; public class Senha implements ActionListener { // Declara Componentes JFrame menssagem; JLabel rotulo; JPasswordField senha; JButton botao; // Cria painel com componentes public Container criaPainel() { JPanel painel = new JPanel(new BorderLayout()); rotulo = new JLabel("Insira uma senha com 8 caracteres:"); senha = new JPasswordField(8); botao = new JButton("Ok"); botao.addActionListener(this); painel.add(rotulo, BorderLayout.PAGE_START); painel.add(senha, BorderLayout.CENTER); painel.add(botao, BorderLayout.PAGE_END); painel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); return painel; } public void actionPerformed(ActionEvent arg0) { // Captura ação do botão if (arg0.getSource() == botao ) { // Recupera senha do componente de senha char[] psenha = senha.getPassword(); // Verifica a senha if (verificaSenha(psenha)) { // Manda uma menssagem usando um componente de caixa de dialogo JOptionPane.showMessageDialog(menssagem, "A senha está correta!"); } else { JOptionPane.showMessageDialog(menssagem, "A senha está incorreta!"); } } } public boolean verificaSenha(char[] psenha) { // Verifica Senha boolean correto = true; // Retorna senha de alguma fonte dentro de um array // Neste caso nossa senha ficticia é fixa. // Aspas simples indicam que os literais são do formato char e não string char [] rsenha = { 'd', 'a', 'a', 'b', 'e', 'r', 't', 'o' } ; if (psenha.length != rsenha.length) { correto = false; } else { for (int i = 0; i < rsenha.length; i++) { if (psenha[i] != rsenha[i]) { correto = false; } } } return correto; } // Cria GUI public static void criaGUI() { JFrame formulario = new JFrame("DA - JPassword"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Senha pass = new Senha(); formulario.setContentPane(pass.criaPainel()); formulario.setSize(300,130); formulario.setVisible(true); } // Chama GUI public static void main(String[] args) { // TODO Auto-generated method stub javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { criaGUI(); } }); } }