Bonjour,

Je suis occupé de lire "Swing la synthèse" (V. Berthié et J.-B. Briaud) ed. Dunod

Dans un des derniers chapitres, il y à cet exemple :
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
20
21
22
23
24
25
26
 
public void init() {
  // Premiere partie
  JComponent panneauAttente = creerPanneauAttente();
  SwingUtilities.invokeLater( new Runnable() {
    public void run() {
      add(panneauAttente, BorderLayout.CENTER);
      status.setText("Avant builder.getPanel()");
    }
  });
 
  // Deuxième partie
  long debut = System.currentTimeMillis();
  JComponant panel = fabrique.getPanel(); /*note de moi : Traitement long */
  long fin = System.currentTimeMillis();
 
  // Troisième partie
  SwingUtilities.invokeLater( new Runnable() {
    public void run() {
      remove(panneauAttente);
      status.setText("Apres builder.getPanel() : " + (( fin-debut ) / 1000) + " s");
      add(panel, BorderLayout.CENTER);
      progress.setIndeterminate(false);
    }
  });
}
Ils expliquent que ceci permet de faire executer la tâche longue ( fabrique.getPanel()) en dehors de l'EDT et que les deux blocs invokeLater permettent de rejoindre l'EDT.
Mais c'est un le contraire de ce qui est expliqué ici par GFX non ?