Temporiser l'exécution d'un bout de code en attendant un événement

Résolu
Signaler
Messages postés
28
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
16 novembre 2005
-
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006
-
Bonjour,

Dans une classe (EcoutSourisEtudiant), j'invoque une autre classe (MotPasse). Cette dernière se charge de créer une fenêtre comportant deux champs texte invitant l'utilisateur du programme à saisir d'une part un login et d'autre part un mot de passe. A ces champs texte s'ajoutent deux boutons, Annuler et Valider. Naturellement, tant que la personne n'a pas saisi et validé (bouton « Valider ») les bonnes informations, ou n'a pas saisi plus simplement, la classe principale (EcoutSourisEtudiant) ne doit pas continuer l'exécution du reste de son code. Que me conseillez-vous ? Sachant que j'ai utilisé sleep, wait qui me bloquent tout le programme.
Ci-joint, un extrait du code de chacune des classes.
Merci par avance pour vous solutions.


//Extrait de la classe EcoutSourisEtudiant
private class EcoutSourisEtudiant implements ActionListener
{
public EcoutSourisEtudiant()
{
}

public void actionPerformed(ActionEvent evenement)
{
Object sourceEvt = evenement.getSource();
boolean i=false;

if(sourceEvt!=boutonFermer)
{
MotPasse motPasse=new MotPasse();

i=motPasse.passwordTrouver();
}

if(i)
{
if(sourceEvt==boutonNouveau)
{
//Activer les boutons et les champs texte
textNumEtudiant.setEnabled(true);
textPrenomEtudiant.setEnabled(true);
textNomEtudiant.setEnabled(true);
textDateNaisEtudiant.setEnabled(true);
textAdresseEtudiant.setEnabled(true);
}
}

//Extrait de la classe MotPasse
public void actionPerformed(ActionEvent evenement)
{
Object sourceEvt = evenement.getSource();

if(sourceEvt==boutonAnnuler) setVisible(false);
if(sourceEvt==boutonValider)
{
Password password=new Password();
char pass[]=passwordField.getPassword();
String chainePass=formatagePw(pass);

password.setPassword(chainePass);
if(password.verifierPassword(chainePass))
{
etatPassword=true; //Si le password est trouvé
setVisible(false);
}
else passwordField.setText("");
chainePass=null;
}
}

protected boolean passwordTrouver()
{
return(etatPassword ? true : false) ;
}

7 réponses

Messages postés
64
Date d'inscription
mardi 4 octobre 2005
Statut
Membre
Dernière intervention
2 août 2006
4
Si j'ai bien compris ton problème, tu veux bloquer ton programme tant que l'utilisateur n'a pas encodé le mot de passe et le login...

J'ai 2 suggestions:

la première serait de lancer une thread qui affiche tes 2 champs textes...
Thread thread = new Thread();
thread.start();

et tu fais un thread.join(); qui obligera ton programme à attendre que ta thread soit fini...

2ème suggesion : faire une boite modale mais je ne sais pas comment se passe ton programme donc je ne peux pas dire si cette 2ème solution qui est la plus simple soit possible dans ton cas...
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

utilises plutôt un JPasswordField. c'est une boite de dialogue qui demande le mot de passe.
Messages postés
28
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
16 novembre 2005

Bonjour,

Merci d'avoir répondu à mon interrogation.

Je me suis trompé en indiquant avoir utilisé un champ texte. En réalité j'ai un JPasswordField afin de saisir le mot de passe.

Cordialement,
Messages postés
28
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
16 novembre 2005

Bonjour;

Merci pour vos propositions.

J'avais déjà essayé avec les threads mais j'aboutissais à une consommation de ressources importantes au point de bloquer mon programme. Je vais renoulever l'expérience.

En ce qui concerne la solution via une fenêtre modale, je ne suis pas sûr que le programme ne continue pas. Je vais aussi expérimenter cette solution.

Cordialement,
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006
2
salut GuyJava,
si çà marche, fait nous voir le détail STP.
je me suis planté en envoyant le message l'autre jours, je voulais l'ajouter à la discuss et ben non ... je connais pas encore bien. en tout cas merci pour ton petit message.
si çà coince toujours ton prog n'hésite pas à faire partager, je suis sur le même genre de bins en ce moment et j'y vois un peu plus clair depuis l'autre nuit.
ciao.
Messages postés
28
Date d'inscription
mercredi 11 mai 2005
Statut
Membre
Dernière intervention
16 novembre 2005

Bonjour Jcodeunpeu,

En raison de mes activités professionnelles, j'ai laissé de coté le programme depuis quelques jours. Ce week-end, je vais m'y remettre. Pas de problème pour vous transmettre le code puisque vous travaillez sur la même problématique.

Cordialement,
Guy
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006
2
no problemo GuyJava
A++