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

Résolu
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005 - 12 nov. 2005 à 21:22
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 - 16 nov. 2005 à 20:44
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

luuuuudooooo Messages postés 64 Date d'inscription mardi 4 octobre 2005 Statut Membre Dernière intervention 2 août 2006 4
14 nov. 2005 à 15:18
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...
3
kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
13 nov. 2005 à 08:19
utilises plutôt un JPasswordField. c'est une boite de dialogue qui demande le mot de passe.
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
13 nov. 2005 à 13:12
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,
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
15 nov. 2005 à 15:27
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,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
15 nov. 2005 à 17:54
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.
0
GuyJava Messages postés 28 Date d'inscription mercredi 11 mai 2005 Statut Membre Dernière intervention 16 novembre 2005
16 nov. 2005 à 20:02
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
0
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
16 nov. 2005 à 20:44
no problemo GuyJava
A++
0
Rejoignez-nous