Я хочу создать в Java Swing JDialog, который, когда он открыт, не может получить доступ к его родительскому окну (так же, как при открытии диалогового окна проводника файлов в Microsoft Word). Есть ли какой-либо метод в классе JDialog, который обеспечивает такое поведение?JDialog перед его родителем JFrame
ответ
использование JDialog.setModal (истина) перед установкой диалога видимую
JDialog yourdialog = ...
yourdialog.setModal(true);
...
yourdialog.setVisible(true);
У вас есть два варианта:
Используйте статические методы в JOptionPane
. Они будут создавать модальные диалоговые окна по умолчанию:
Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JOptionPane.showMessageDialog(parentWindow, "Hello, World); // Create modal dialog aligned with parent window.
Создать JDialog
явно:
Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JDialog dlg = new JDialog(parentWindow, ModalityType.APPLICATION_MODAL);
Первый вариант намного проще, и я, как правило, предпочитают его особенно с модальными диалогами.
как насчет блокировки JDialog внутри его родителя JFrame? Это правда, что с помощью JDialog.setModal можно сделать jdialog так же, как диалог в другом приложении. остановил все рамки до того, как jDialog закрылся
Кажется, у вас есть ответ, который немного отличается от других, но это не очень понятно. Я не совсем понимаю, что вы подразумеваете под «блокировкой» JDialog внутри своего родителя. Не могли бы вы объяснить свою идею еще немного? – RustyTheBoyRobot
Адамски и Ян оба уже имеют правильные ответы, но я хотел просто убедиться, что концепция модального окна объясняется.
ОП задал вопрос о диалоге, который блокирует доступ к родительскому объекту. Это называется модальным диалогом (или модальным окном). Википедия дает this definition:
В дизайне пользовательского интерфейса, модальное окно является окном ребенка, который требует, чтобы пользователей взаимодействует с ним, прежде чем они смогут вернуться к работе с родительским приложением
Таким образом, «модальный» означает что он блокирует родительские окна (пользователи не могут взаимодействовать с каким-либо окном, кроме модального окна), в то время как «немодальный» или «немодальный» означает, что дочерние и родительские окна будут доступны одновременно.
Это концепция, которая существует в инфраструктурах GUI в целом, а не только для структуры Swing. В любой графической среде, которую вы используете, вы, вероятно, можете найти такую функциональность, ища свойство modal
.
- 1. Всплывающий JFrame перед модальным JDialog
- 2. Центр JDialog над родителем
- 3. Переместить div перед его родителем
- 4. Изменить jFrame на jDialog?
- 5. JDialog: Доступ к Jframe при активном Jdialog
- 6. JFrame-JDialog связь
- 7. Расширение JDialog (скрыто?) Не отображается перед родительским JFrame?
- 8. JDialog логин с JFrame
- 9. Обфускация JFrame открытие JDialog
- 10. Несколько JFrame или JDialog
- 11. JFrame & JDialog link
- 12. Как открыть JDialog из JFrame
- 13. JFrame вести себя как JDialog?
- 14. сделать глянцевый JFrame и JDialog
- 15. Преобразование JDialog в Jframe/JPanel
- 16. Установить местоположение JDialog относительно JFrame
- 17. Невозможно центрировать jdialog в jframe
- 18. Вещество UI & undecorated JDialog/JFrame
- 19. Показать JDialog («Подождите») на JFrame
- 20. Как вставить JDialog в JFrame?
- 21. Как связать поле JDialog и его соответствующий JFrame (где был запущен ящик JDialog)
- 22. onToped JFrame открывает JDialog = диалоге не ontoped над JFrame
- 23. Java Swing. Windows перед запуском из JDialog
- 24. Java-связь между классами и JFrame JDialog
- 25. Используйте JFrame вместо JDialog в Netbeans Wizard
- 26. JDIalog бросает NullPointerException при доступе от JFrame
- 27. недекорированного JDialog/JFrame больше, чем декорированный один
- 28. Swing - Как изменить цвет фона Jframe/Jdialog
- 29. Как закрыть несколько окон JFrame и JDialog?
- 30. Получить значение из JDialog родителю JFrame
или использовать один из конструкторов JDialog, который определяет модальность. – Qwerky