Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Но оба наследуются от Window, поэтому они обладают большой функциональностью.

Ответ 2

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

Конечно, вы можете.

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

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

Ответ 3

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

Ответ 4

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