Désactiver le bouton de fermeture en java JFace dialogue?
Comment puis-je désactiver le bouton de fermeture (ou de le faire disparaître complètement si possible) dans une java JFace dialogue?
Vous devez vous connecter pour publier un commentaire.
Comment puis-je désactiver le bouton de fermeture (ou de le faire disparaître complètement si possible) dans une java JFace dialogue?
Vous devez vous connecter pour publier un commentaire.
Voir ici pour un exemple montrant comment masquer le bouton fermer dans un
Dialog
. Il vous suffit de remplacer la méthode suivante:Sinon remplacer
close()
et retourne false pour empêcher la fermeture.Mise à jour: Alors que le code ci-dessus "résout" le problème à portée de main, il n'a pas d'expliquer beaucoup de choses, et introduit un méchant bug. Veuillez voir la Bonne réponse, pour une meilleure version.
close()
méthodeBoutons dans une boîte de Dialogue sont créés avec la méthode createButton(). Pour "filtrer" le bouton annuler, vous pouvez la remplacer comme suit:
Toutefois, la boîte de Dialogue du bouton fermer (fourni par le système d'exploitation) fonctionne toujours. Pour le désactiver, vous pouvez remplacer canHandleShellCloseEvent():
Ici est un ensemble minimal exemple:
Pour rendre le bouton X n'est pas visible sur une boîte de Dialogue, vous devez éteindre la SWT.PROCHE du style de la propriété. Important de noter que ce qui doit être fait avant le dialogue est ouvert, donc dans le constructeur de votre dialogue de travail.
Le shell par défaut de style sur un JFace Fenêtre est
SWT.SHELL_TRIM
qui est égal àSWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE
Pour une boîte de dialogue étendue de
org.eclipse.jface.dialogs.Dialog
, overrdingcanHandleShellCloseEvent
ne fonctionne pas pour moi,Puis de la fermeture de l'ensemble de l'application travaillé comme une bonne stratégie pour ma situation, parce que j'ai eu à faire de même si l'utilisateur la possibilité de l'annuler.
Je sais que ce n'est pas la réponse exacte à la question, mais peut être utilisé comme une solution de contournement pour gérer la situation.
sous
open()
oucreateContents()
méthode,