В чем разница между JFrame
и a JDialog
?
Почему мы не можем использовать setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
для JDialog?
В чем разница между JFrame
и a JDialog
?
Почему мы не можем использовать setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
для JDialog?
JFrame
- это нормальное окно со стандартными кнопками (необязательно) и украшениями. JDialog
с другой стороны не имеет кнопок максимизации и уменьшения и обычно создается с помощью статических методов JOptionPane
и лучше подходит для их модальности (они блокируют другие компоненты до тех пор, пока они не будут закрыты).
Но оба наследуются от Window, поэтому они обладают большой функциональностью.
Почему мы не можем использовать
setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
дляJDialog
?
Конечно, вы можете.
Отправьте SSCCE, который демонстрирует проблему, возникающую при использовании этого значения.
Однако вы не можете использовать EXIT_ON_CLOSE
для JDialog
, потому что это значение не поддерживается, что имеет смысл, поскольку JDialog
является "дочерним" или "вспомогательным" окном для вашего приложения, которое представлено JFrame
. Закрытие диалогового окна не должно закрывать приложение.
Есть несколько конструкторов JDialog
с параметром owner
, который может быть Frame
, a Dialog
или Window
. Непустое значение также приводит к тому, что JDialog
остается выше своего владельца. Это дополняет модальное поведение, описанное Fortran.
Вы также можете использовать setModal(boolean t);
Это работает только на JDialog
. Пользователь должен работать в JDialog
не в другом окне. Если они хотят управлять окнами владельца, они должны отключить этот JDialog
.