Interface graphique java

Fermé
lolita-01 Messages postés 90 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 26 juillet 2013 - 1 mai 2012 à 00:32
lolita-01 Messages postés 90 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 26 juillet 2013 - 1 mai 2012 à 02:36
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
1 mai 2012 à 01:31
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 mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
1 mai 2012 à 01:35
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 mercredi 5 janvier 2011 Statut Membre Dernière intervention 26 juillet 2013
1 mai 2012 à 02:36
merci pour vos réponses :))
0