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 :
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.
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); } }); }
Mais c'est un le contraire de ce qui est expliqué ici par GFX non ?
Partager