Bonjour,

J'ai crée un Thread Main. Celui-ci devrais effectuee ces actions :
1° Charge LoginFrame
2° Affiche LoginFrame
3° Charge MenuFrame
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 :
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();
            }
        }
 
}
LoginFrame mettait flag à true une fois l'utilisateur authentifié.

Ca fonctionne mais n'est pas tres propre. Mieux vaut utiliser wait().

j'ai donc crée une méthode synchronisée :
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();            
        }
    }
j'apelle cette méthode à la place de ma boucle pour sleep, aprés les étapes 1 à 3.

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