В чем разница между JFrame и JDialog? - PullRequest
27 голосов
/ 05 апреля 2011

В чем разница между JFrame и JDialog?

Почему мы не можем использовать setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE); для JDialog?

Ответы [ 4 ]

26 голосов
/ 05 апреля 2011

JFrame - это обычное окно с его обычными кнопками (опционально) и украшениями.JDialog на другой стороне не имеет кнопок максимизации и минимизации и обычно создается с помощью JOptionPane статических методов и лучше подходит для того, чтобы сделать их модальными (они блокируют другие компоненты, пока не будут закрыты).

Но оба наследуют от Window, поэтому они имеют много общего.

5 голосов
/ 05 апреля 2011

Почему мы не можем использовать setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); для JDialog?

Конечно, можно.

Опубликуйте SSCCE , который демонстрирует проблему, возникающую при использовании этого значения.

Однако вы не можете использовать EXIT_ON_CLOSE для JDialog, потому что это значение не поддерживается, что имеет смысл, поскольку JDialog является "дочерним" или "вспомогательным" окном для вашего приложения, которое представлено JFrame. Закрытие диалога не должно закрывать приложение.

1 голос
/ 12 августа 2013

Существует несколько конструкторов JDialog с параметром owner, которые могут быть Frame, Dialog или Window.Ненулевое значение также заставляет JDialog оставаться выше своего владельца.Это дополняет модальное поведение, описанное Fortran.

0 голосов
/ 22 октября 2012

Вы также можете использовать setModal(boolean t); Это работает только на JDialog.Пользователь должен работать с JDialog, а не с другим окном.Если они хотят управлять окнами владельца, они должны закрыть это JDialog.

...