Comparar senha

Bom dia,

Estou fazendo comparação de Senhas só que sempre da o valor que não são iguais

já tentei varias formas:

1- Tentativa:

if (txtSenha.getText().equals(txtConfirmarSenha.getText()))

2- Tentativa:

if (new String(txtSenha.getPassword()).equals(new String(txtConfirmarSenha.getPassword()))){
JOptionPane.showMessageDialog(null,
    "Suas senhas não são iguais","Atenção!",
    JOptionPane.WARNING_MESSAGE);

Obrigado…

Essa tentativa não deu certo? Parece certo pra mim.

Qual string é retornada de new String(txtSenha.getPassword()) ?

está retornando true

Então tah certo. Está comparando corretamente. Se as senhas forem iguals, basta não apresentar a mensagem.

Mais aí é que tá retorna true e mostra a msg que não são iguais… E quando você coloca sim diferente passa…

posta o IF completo ai

public boolean ValidaCampos(){

        if (txtData == null || txtData.getText().trim().equals("") || txtData.getText().equals("  /  /    ")){          
        MudaCor();
        txtData.setBackground(Color.PINK);            
        JOptionPane.showMessageDialog(null, " Digite Uma Data Valida! "
                ," Atenção !!! ",JOptionPane.WARNING_MESSAGE);   
        txtData.requestFocus();  
        return (true); 
        
    }
        
     else if (txtNomeUsuario.getText().equals("")){
        MudaCor();
        txtNomeUsuario.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite um Nome de Usuário!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtNomeUsuario.requestFocus();
        return (true); 
    }
    
     else if (txtLogin.getText().equals("")){
        MudaCor();
        txtLogin.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite um Login!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtLogin.requestFocus();
        return (true); 
    }
     
      else if (txtEmail.getText().equals("")){
        MudaCor();
        txtEmail.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite um E-mail Válido!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtEmail.requestFocus();
        return (true); 
    }      
    
    
     else if(jComboBoxPerfil.getSelectedItem()== null || jComboBoxPerfil.getSelectedIndex()== -1){            
         MudaCor();
         jComboBoxPerfil.setBackground(Color.PINK);
         JOptionPane.showMessageDialog(null, 
                 "Selecione um Pefil de Usuário!", "Atenção!", 
                 JOptionPane.WARNING_MESSAGE);
         jComboBoxPerfil.requestFocus();
         return(true);
         
}
   
    else if (txtSenha.getText().equals("")){
        MudaCor();
        txtSenha.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite uma Senha!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtSenha.requestFocus();
        return (true); 
    }
    
    else if (txtConfirmarSenha.getText().equals("")){
        MudaCor();
        txtConfirmarSenha.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite a Confirmação da Senha!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtConfirmarSenha.requestFocus();
       return (true); 
    }
    
          
   else if (txtLembrete.getText().equals("")){
        MudaCor();
        txtLembrete.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Digite um Lembrete Para Senha!","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtLembrete.requestFocus();
        return (true);  
   } 
   
   else if (txtSenha.getText().length() < 8 || txtConfirmarSenha.getText().length() < 8){
       MudaCor();
        txtSenha.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Sua senha deve conter no mínimo 8 caracteres","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtSenha.setText("");
        txtConfirmarSenha.setText("");
        txtSenha.requestFocus();
        return (true);  
   }
   
    else if (new String(txtSenha.getText()).equals(new String(txtConfirmarSenha.getText()))){
        MudaCor();
        txtSenha.setBackground(Color.PINK);
        JOptionPane.showMessageDialog(null,
                "Suas senhas não são iguais","Atenção!",
                JOptionPane.WARNING_MESSAGE );
        txtSenha.setText("");
        txtConfirmarSenha.setText("");
        txtSenha.requestFocus();
        return (true);  
   }    
   
    return false;
 }

Só um detalhe: se txtSenha.getText() já retorna uma string, então é completamente redundante e desnecessário criar outra com new String(txtSenha.getText()).

E vc está fazendo:

else if (new String(txtSenha.getText()).equals(new String(txtConfirmarSenha.getText()))) {
    ...
    JOptionPane.showMessageDialog(null,
        "Suas senhas não são iguais", "Atenção!",
        JOptionPane.WARNING_MESSAGE);

Ou seja, se as senhas são iguais, vc mostra uma mensagem dizendo que não são iguais.

Para funcionar, teria que testar se elas são diferentes, ou seja:

else if (! txtSenha.getText().equals(txtConfirmarSenha.getText())) {
         ^ essa exclamação faz toda a diferença

Repare no caractere ! - ele indica negação, ou seja, o if acima verifica se o equals retorna false (“se as strings não são iguais”).

1 curtida

Outro detalhe é que tem muita repetição no seu código. Você poderia pegar as partes que se repetem e refatorar para um método, como por exemplo:

private void erro(String mensagem, JComponent campo, Color cor, boolean limparCampos) {
    MudaCor();
    campo.setBackground(cor);
    JOptionPane.showMessageDialog(null, mensagem, "Atenção!", JOptionPane.WARNING_MESSAGE);
    if (limparCampos) {
        txtSenha.setText("");
        txtConfirmarSenha.setText("");
    }
    campo.requestFocus();
}

Aí na validação você só chama este método mudando os parâmetros para cada caso:

public boolean ValidaCampos() {
    if (txtData == null || txtData.getText().trim().equals("") || txtData.getText().equals("  /  /    ")) {
        erro("Digite Uma Data Valida", txtData, Color.PINK, false);
        return true;
    } else if (txtNomeUsuario.getText().equals("")) {
        erro("Digite um Nome de Usuário!", txtNomeUsuario, Color.PINK, false);
        return true;
    } else if (txtLogin.getText().equals("")) {
        erro("Digite um Login!", txtLogin, Color.PINK, false);
        return true;
    } else if (txtEmail.getText().equals("")) {
        erro("Digite um E-mail Válido!", txtEmail, Color.PINK, false);
        return true;
    } else if (jComboBoxPerfil.getSelectedItem() == null || jComboBoxPerfil.getSelectedIndex() == -1) {
        erro("Selecione um Pefil de Usuário!", jComboBoxPerfil, Color.PINK, false);
        return true;

    } else if (txtSenha.getText().equals("")) {
        erro("Digite uma Senha!", txtSenha, Color.PINK, false);
        return true;
    } else if (txtConfirmarSenha.getText().equals("")) {
        erro("Digite a Confirmação da Senha!", txtConfirmarSenha, Color.PINK, false);
        return true;
    } else if (txtLembrete.getText().equals("")) {
        erro("Digite um lembrete Para Senha!", txtLembrete, Color.PINK, false);
        return true;
    } else if (txtSenha.getText().length() < 8 || txtConfirmarSenha.getText().length() < 8) {
        erro("Sua senha deve conter no mínimo 8 caracteres", txtSenha, Color.PINK, true);
        return true;
    } else if (!txtSenha.getText().equals(txtConfirmarSenha.getText())) {
        erro("Suas senhas não são iguais", txtSenha, Color.PINK, true);
        return true;
    }

    return false;
}

Boa tarde, obrigado pelo toque, estou voltando a programar em Java depois de 7 anos afastado kk mais vms que vms.

Ah sim agora entendi ! Deu certinho

:facepunch::facepunch::facepunch: