Interface graphique java

lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -  
lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
je ne comprend pas ou est ma faute je veux que ce code compare entre le mot de passe saisie dans l'interface graphique et le code que j'ai défini ="secret"
ActionListener EcouteurB1= new ActionListener ()
{
public void actionPerformed(ActionEvent arg0)
{
JPasswordField MPS = new JPasswordField();
JPasswordField P2 = new JPasswordField("secret");
if (JPasswordField.getText().equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null,"Veuillez saisir votre mot de passe!!");
else
if ( JPasswordField.getPassword().equals(P2)&& JRadioButton1.isSelected()==true )
JOptionPane.showMessageDialog(null,"mot de passe valide!");
else
JOptionPane.showMessageDialog(null,"Veuillez vérifier!!");

}

};
jButton1.addActionListener(EcouteurB1);
Volia! le probléme c'est qu'il ne compare pas il m'affiche toujours Veuillez vérifier!
Aidez moi svp
A voir également:

3 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
C'est surement parce que tu ne laisses pas de temps à l'utilisateur pour rentrer le mot de passe ! Dès que c'est créé, tout de suite tu vérifies, c'est idiot ! Ce qu'il faudrait c'est mettre les JPasswordField en dehors de l'ActionListener ...

Ensuite tu utilises getText() comme une méthode static qu'elle n'est pas, soit tu l'utilises sur MPS qoit sur P2 (remarques : les noms de variables devraient être en minuscules) mais pas sur JPasswordField. De toute façon getText() est dépréciée, il faut utiliser getPassword() à la place, en faisant attention car elle renvoie un char[] et non un String.

Enfin, en supposant que tu veuilles bien utiliser equalsIgnoreCase (dont l'intérêt est douteux pour un mot de passe), il est totalement inutile sur une chaîne vide "", autant directement tester la taille de la chaîne de caractères !

Remarque : il est toujours inutile de faire un test bidule==true, tu peux toujours remplacer ça directement par bidule et avoir le même résultat.
Par contre l'ordre dans le && est important, car les conditions sont exécutées de gauche à droite, il vaut donc mieux mettre les tests les plus simples en premier, ce qui évite de faire des calculs coûteux pour un résultat qui sera de toute façon si le test simple échoue.

final JRadioButton jRadioButton1 = // ...

final JPasswordField mps = new JPasswordField();
final JPasswordField p2 = new JPasswordField("secret");

ActionListener ecouteurB1= new ActionListener ()
{
    public void actionPerformed(ActionEvent e)
    {
        if (mps.getPassword().length==0)
            JOptionPane.showMessageDialog(null,"Veuillez saisir votre mot de passe !");
        else if (jRadioButton1.isSelected() && Arrays.equals(mps.getPassword(), p2.getPassword()))
            JOptionPane.showMessageDialog(null,"mot de passe valide !");
        else
            JOptionPane.showMessageDialog(null,"Veuillez vérifier !");
    }
};

jButton1.addActionListener(ecouteurB1);

Pour conclure, vu le nombre d'erreurs (souvent graves) pour aussi peu de lignes, je ne peux que te conseiller de revoir TRÈS rapidement tes cours, et consulter quelques tutoriels ici, ou ...
1
arth Messages postés 9374 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
C'est quoi ça ?

if ( JPasswordField.getPassword().equals(P2)&& JRadioButton1.isSelected()==true )

A priori tu compares un type avec une donnée.

Je verrais plutôt :

if ( MPS.getPassword().equals(P2.getPassword()) && RadioButton1.isSelected() == true )

Même si je ne vois pas trop pourquoi tu définis des JPasswordField dans ton ActionListener puisque je suppose que ces champs existent déjà dans ta GUI bien avant l'appui sur le bouton. Donc l'ActionListener devrait juste comparer la valeur de champs existants dans ton formulaire.
1
lolita-01 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour vos réponses :))
0