Quelle est la différence entre un JFrame
et un JDialog
?
Pourquoi ne pouvons-nous pas utiliser setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
pour un JDialog?
JFrame
est une fenêtre normale avec ses boutons normaux (éventuellement) et ses décorations. JDialog
de l'autre côté ne comporte pas de boutons de maximisation et de réduction. Ils sont généralement créés avec des méthodes JOptionPane
statiques et conviennent mieux pour les rendre modaux (ils bloquent les autres composants jusqu'à ce qu'ils soient fermés).
Mais tous deux héritent de Window, ils partagent donc beaucoup de fonctionnalités.
Pourquoi ne pouvons-nous pas utiliser
setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
pourJDialog
?
Sûr que vous pouvez.
Postez votre SSCCE qui montre le problème que vous rencontrez lorsque vous utilisez cette valeur.
Cependant, vous ne pouvez pas utiliser EXIT_ON_CLOSE
pour un JDialog
car cette valeur n'est pas prise en charge, ce qui est logique car JDialog
est une fenêtre "enfant" ou "auxiliaire" pour votre application qui est représentée par un JFrame
. Fermer une boîte de dialogue ne devrait pas fermer l'application.
Il existe des constructeurs JDialog
avec un paramètre owner
qui peut être Frame
, Dialog
ou Window
. Une valeur non nulle oblige également la JDialog
à rester au-dessus de son propriétaire. Ceci est complémentaire du comportement modal décrit par Fortran.
Vous pouvez également utiliser setModal(boolean t);
Cela ne fonctionne que sur JDialog
. L'utilisateur doit opérer sur JDialog
et non sur une autre fenêtre. S'ils veulent utiliser les fenêtres du propriétaire, ils doivent fermer cette JDialog
.