Fermeture fenêtre Swing

Résolu
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012 - 30 mai 2012 à 10:39
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012 - 30 mai 2012 à 12:02
Bonjour,

Dans le cadre de mon stage de deuxième année d'informatique, l'application que je dois coder contient une partie effectuant une mise à jour d'une base de données, en recherchant de nouveaux plans sur des lecteurs réseaux, mais ça c'est un détails.

J'ai codé une petite fenêtre qui affiche l'avancement de la mise à jour (avec une JProgressBar et des éléments textuels)

Cependant, j'aimerai que cette fenêtre ne puisse être fermée, tant que la mise à jour n'est pas terminée !

Donc, JFrame.DO_NOTHING_ON_CLOSE ne me suffit pas, la fenêtre se ferme quand même, et ça m'embête beaucoup !
Je suppose qu'il y a moyen d'intercepter la fermeture de la fenêtre (WindowEvent.CLOSING), mais à ce moment là, je ne peux plus empêcher la fenêtre de se fermer non plus !

Bref, je nage un peu dans le flou, et j'aurai besoin d'aide !

Merci d'avance :)

10 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 mai 2012 à 10:58
Salut,

Tu peux utiliser une JWindow de cette manière, tu n'auras pas de bordure à ta fenêtre et tu n'auras pas besoin d'intercepter les éléments de fermeture.

Tu l'utilises comme une JFrame. Si dans ton code, tu remplaces tous les JFrame par JWindow, ca sevrait fonctionner.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 mai 2012 à 11:42
Oui, si tu veux, après, tu n'es pas obligé non plus de trop t'embêter avec ca.

Même si l'utilisateur ne peut pas faire remonter la fenêtre au premier plan, il peut réduire toutes les autres pour récupérer ta JWindow donc, ce n'est pas un vrai problème.
3
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 11:07
Ah ! Merci :).

C'est un peu moins joli, mais tout ce qu'il faut, c'est que ça fonctionne !
Merci beaucoup pour cette astuce, je ne connaissais pas les JWindow :).
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 mai 2012 à 11:09
Au contraire, je dirais que c'est plus joli, tu peux mettre une image de fond et t'arranger pour que ta fenêtre ait l'air bien pro comme celle qui s'affiche au démarrage d'éclipse.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 11:11
La seule chose qui me gène, c'est que ça ne créait pas de lien dans la barre des tâches (je ne me souviens plus du mots exacts ...) et du coup, on ne peut pas la remettre au premier plan
0
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 11:14
(la mise à jour est assez conséquente et prends plusieurs minutes, c'est pourquoi j'aime pouvoir revenir sur ma fenêtre pour voir où ça en est)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 367
30 mai 2012 à 11:16
Si tu peux la remette au premier plan avec un movetoFront. Mais il est vrai que l'utilisateur ne peut pas la ramener manuellement au premier plan.

Normalement, tu utilises un thread pour faire avancer ta barre de progression, tu peux appeler le moveToFront à chaque nouvelle avancée de ta progressbar.
0
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 11:25
Le problème dans ce cas là, c'est que l'utilisateur est obligé d'avoir la mise à jour au premier plan (ce qu'il ne souhaite pas forcément non plus)
0
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 11:25
Je vais peut-être tout simplement rajouter un bouton "Afficher/Cacher avancement de la mise à jour"
0
lossehelin Messages postés 51 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 5 juillet 2012
30 mai 2012 à 12:02
Oui c'est vrai qu'au final, c'est qu'un détails pour l'instant :).
Je me concentrerai sur l'ergonomie à la fin de mon stage, il faut surtout que ça fonctionne, merci encore pour ton aide :).
0