fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014
-
21 févr. 2007 à 18:32
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014
-
15 mars 2007 à 15:38
Bonjour,
j'essais de suspendre le déroulement d'une classe pendant que mon objet est en action.
Voici mon code:
//Création de l'objet formulaire
Formulaire form = new Formulaire();
//Affichage
form.setVisible(true );
try
{
this
.wait();
}
catch
(InterruptedException e){
e.printStackTrace();
}
Lorsque l'utilisateur à fini de remplir le formulaire, ma classe formulaire fait un notify( ).
Mais le wait et le notify me donnent une erreur: IllegalMonitorStateException.
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014 21 févr. 2007 à 21:08
Y aurait-il peut-être une autre façon de faire qui permettrait que l'utilisateur remplisse le formulaire puis qu'après le proccesus de ma première classe continu ??
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 21 févr. 2007 à 21:49
tu creer simplement une méthode
public synchronized void wakeUp(){
notify();
}
et tu appel cette méthode et si toute fois cela merdouille(je sais plus si il faut aussi synchroniser la methode qui a le wait ou l'inverse) tu synchronise aussi celle qui a le wait soit :
public synchronized void maMethode(){
//Création de l'objet formulaire
Formulaire form = new Formulaire();
//Affichage
form.setVisible(true );
try
{
this
.wait();
}
catch
(InterruptedException e){
e.printStackTrace();
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014 21 févr. 2007 à 22:07
Salut, j'ai fait comme tu m'as dit. J'ai synchronisé la méthode qui cré l'objet et dans la classe ou est l'objet je n'ai pas eu à synchroniser la méthode qui appele le notify( ).
Mais j'ai un autre problème, mon objet est un JFrame, lorsque l'objet est créé la fenêtre s'ouvre mais elle reste grise il n'y a rien à l'intérieur. Pourtant ce n'est pas mon objet qui a un problème, car je suis capable de l'exécuté correctement lorsque que je le fais sans wait dans la classe ou il se trouve déja.
cela dépend de
comment est fait ton code donc sans le code je ne pourrai pas te dire
qui doit être dans un thread ... mais sache juste que le prob
de fenêtre grise c'est normal vu que tu met en wait le thread
main donc fatalement si il est en wait il ne peut s'occuper de
l'affichage de ta fenêtre
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
fredou30
Messages postés46Date d'inscriptionvendredi 30 septembre 2005StatutMembreDernière intervention 2 juin 2014 22 févr. 2007 à 16:18
Ok, mais mon wait( ) ne s'exécute pas dans ma méthode main. J'ai une classe qui crée mon objet, qui contient le wait et le notify. Puis j'ai une autre classe qui crée l'objet.
Pourtant quand j'exécute l'objet dans la classe qui le contient je n'ai pas de problème ??