it-swarm.com.ru

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

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

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

26
Mahdi_Nine

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

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

26
fortran

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

Что вы можете.

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

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

5
camickr

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

1
Laurent Caillette

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

0
Ryan