Bonjour,
Pas très à l'aise en Swing et plus particulièrement dans la gestion des threads, je vous soumets mon problème.
J'ai actuellement une application client-serveur qui tourne.
Lorsque je clique sur "Quitter", une boîte de dialogue demande à l'utilisateur s'il veut sauvegarder les modifications avant de quitter (comportement standard).
Cela dit, l'enregistrement peut être long et j'ai donc besoin que la fenêtre attende la fin de l'enregistrement pour se fermer (et donc fermer le thread principal)
Actuellement j'ai ceci :
et enregistrerTout() s'effectue dans un thread à part avec barre de progression. Je voudrais donc attendre la fin de ce thread pour fermer ma fenêtre principal mais j'ai essayé avec un sémaphore, cela ne fonctionne pas.
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 protected void quitter() { int reponse = JOptionPane.showConfirmDialog(vue, _resourceMsg .getString("ConfirmationSauvegarde.Message"), _resourceIHM .getString("ConfirmationSauvegarde.Titre"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, ihm.Icones.QUESTION); if (reponse == JOptionPane.YES_OPTION) { enregistrerTout(); } else if (reponse == JOptionPane.CANCEL_OPTION) { return; } } else { int reponse = JOptionPane.showConfirmDialog(vue, _resourceMsg .getString("ConfirmationQuitter.Message"), _resourceIHM .getString("ConfirmationQuitter.Titre"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, ihm.Icones.QUESTION); if (reponse == JOptionPane.NO_OPTION) { return; } } // SYNCHRO A FAIRE vue.dispose(); }
Pourriez vous m'orienter sur la façon la plus propre de faire cela ?
Merci par avance,








Répondre avec citation


Partager