Bonjour,
J'ai crée un Thread Main. Celui-ci devrais effectuee ces actions :
1° Charge LoginFrame
2° Affiche LoginFrame
3° Charge MenuFrame
4° Attend
5° Affiche MenuFrame
Mon but étant d'avoir un Objet User crée avant d'afficher MenuFrame.
J'avai essayé un flag qui se mettait à true une fois que l'utilisateur etait authentifie :
LoginFrame mettait flag à true une fois l'utilisateur authentifié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Main extends Thread { ... public static boolean flag = false; ... // realisation des étapes 1 à 3 while(!flag){ try { sleep(100); System.out.println("Attente"); } catch (InterruptedException e) { System.err.println("Thread Main : Impossible de mettre en attente."); e.getClass(); e.printStackTrace(); } } }
Ca fonctionne mais n'est pas tres propre. Mieux vaut utiliser wait().
j'ai donc crée une méthode synchronisée :
j'apelle cette méthode à la place de ma boucle pour sleep, aprés les étapes 1 à 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private synchronized void waitLogin() { try { while(true){ System.out.println("Attente"); wait(); } System.out.println("Plus en attente"); } catch (InterruptedException ex){ System.err.println("Erreure dans l'attente"); ex.printStackTrace(); } }
Main est bien mis en attente Mais comment faire pour le réveiller depuis LoginFrame lorsque l'utilisateur est authentifié ?
Comment appeler notify() sur Main ?
Merci
Partager