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();
}
});
}
}


