Quelle est la différence entre un JFrame et un JDialog?

Quelle est la différence entre un JFrame et JDialog?

Pourquoi ne pouvons-nous pas utiliser setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); pour un JDialog?

26
demandé sur MC Emperor 2011-04-05 17:43:54

4 réponses

JFrame est une fenêtre normale avec ses boutons normaux (en option) et décorations. JDialog de l'autre côté n'a pas de boutons maximize et minimize et sont généralement créés avec JOptionPane les méthodes statiques, et sont mieux adaptées pour les rendre modales (ils bloquent les autres composants jusqu'à ce qu'ils soient fermés).

mais les deux héritent de Window, donc ils partagent beaucoup de fonctionnalités.

26
répondu fortran 2011-04-05 13:51:03

pourquoi nous ne pouvons pas utiliser setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);JDialog?

bien Sûr, vous pouvez.

Post SSCCE cela démontre le problème que vous avez en utilisant cette valeur.

Toutefois, vous ne pouvez pas utiliser EXIT_ON_CLOSEJDialog parce que cette valeur n'est pas supportée ce qui a du sens depuis un JDialog est une fenêtre" enfant "ou" helper " pour votre application qui est représentée par un JFrame. Fermer un dialogue ne doit pas fermer application.

5
répondu camickr 2017-07-03 15:16:01

Il y a quelques JDialog les constructeurs avec un owner paramètre qui peut être un Frame, un Dialog et Window. Une valeur non nulle fait aussi JDialog rester au-dessus de son propriétaire. Ceci est complémentaire du comportement modal décrit par Fortran.

1
répondu Laurent Caillette 2017-07-03 15:16:21

vous pouvez aussi utiliser setModal(boolean t); Cela ne fonctionne que sur JDialog. L'utilisateur doit utiliser JDialog pas autre fenêtre. S'ils veulent faire fonctionner les fenêtres des propriétaires, ils doivent fermer ça JDialog.

0
répondu Ryan 2017-07-03 15:16:55