Problema com JPassordField

8 respostas
M

Pessoal,

Tenho um formulário desenvolvido em Swing/NetBeans, contendo campos do tipo JPassordField.
jpfEntradaSenha - para a digitação da senha
jpfConfirmaSenha - para a confirmação da digitação da senha.

Acontece, porém, o método getPassord() de JPasswordField não retorna uma String e sim um array de char.
Sendo assim, alguém poderia me ajudar a fazer o seguinte :

1o - capturar o conteúdo de cada um dos JPassordField e jogar cada um destes conteúdos num array de char
2o - verificar os dois array de char possuem o mesmo conteúdo, ou seja, se os dois campos de senha possuem o mesmo conteúdo.

Agradece,

Max

8 Respostas

C

Dá um aolhada aqui que tu vais saber o q fazer:

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

alanblins
//Para exibir o conteudo do JPasswordfield

char[] data = password.getPassword();

String senha = new String(data);
JOptionPane.showMessageDialog(null,senha);
alanblins

//Lembrando que para comparar String se usar o método equal

if(senha.equals(123)){

JOptionPane.showMessageDialog(null,“A senha está correta);

}
M

alanblins,

Valeu aí pela ajuda. Deu certo aqui. Pensei até que fosse mais complicado fazer isto.
O único porém é que eu não tava querendo usar String propriamente dito, pq pelo que andei lendo, uma String é uma referência estática, ou seja, uma vez instanciada,
o seu conteúdo fica disponível lá na máquina virtual.
Já me disseram que isto não é bom por questões de segurança.
Então, o melhor mesmos seria eu comparar o conteúdo dois dois JPasswordField como sendo dois arrays de caracteres.
Achei que tivesse um .equals para caracteres e tentei usar aqui mas não deu certo.
Desculpe estar lhe enchendo a paciência mas é que tou começando ainda em Javal e apanhando um bocado dela(risos).
T+

alanblins
private void passwordActionPerformed(java.awt.event.ActionEvent evt) {                                         
        boolean correto=false;
        valor = password.getPassword();
        if(senha.length == valor.length){
            for(int i=0;i<senha.length;i++){
                if(senha[i]!=valor[i]){
                    correto = false;
                    break;
                }
                correto = true;
            }
        } else{
            correto = false;
        }
        
        if(correto){
            JOptionPane.showMessageDialog(null,"Senha correta");
        } else{
            JOptionPane.showMessageDialog(null,"Senha errada");
        }
        
        
    }

Qualquer dúvida post ai sem problemas. Estamos aqui para trocar conhecimento. Todo mundo sai ganhando com isso!>

M

Amigo,

Com este trecho :

"…
if(senha[i]!=valor[i]){

"
eu não estaria comparando os endereços(referências) de cada vetor ?

Obrigado pela atenção.
Max
alanblins

Esse código compara o conteudo do vetor na posição “i”. Ah, quase que esqueço. o Vetor senha eu instanciei fora do método action performed.
Outra coisa: O método equals desse vetor não funcionou porque ele tem como parâmetro um objeto. Portanto se o argumento for um char[] ele não irá funcionar.

alanblins
public class Senha extends javax.swing.JFrame {
    char[] senha = {'A','B','C'};
    char[]  valor = null;
    /** Creates new form Senha */
    public Senha() {
        initComponents();
        
        
    }
Criado 1 de outubro de 2008
Ultima resposta 5 de out. de 2008
Respostas 8
Participantes 3