В чем разница между JFrame и JDialog?
В чем разница между JFrame
и a JDialog
?
Почему мы не можем использовать setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
для JDialog?
Ответы
Ответ 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
.