|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот документ, вместе с документацией API для связанных с модальностью классов (такой как java.awt.Dialog), кратко описывает новые функции модальности и как использовать их. Это содержит следующие разделы:
Документ - окно без владельца, на что, вместе со всей его дочерней иерархией, можно управлять как единственный автономный документ. Каждое окно принадлежит некоторому документу — его корень может быть найден как самое близкое окно предка без владельца.
Модальное блокированное окно - окно, что:
Предупреждение! Некоторые менеджеры окон позволяют пользователям изменять Z-порядок окна произвольным способом — в этом случае, последнее требование не может быть удовлетворено.
Модальное диалоговое окно - диалоговое окно, которое блокирует некоторые окна, в то время как это видимо. Блокированные окна определяются согласно контексту диалогового окна блокирования.
Модальное исключенное окно - окно, которое остается разблокированным, в то время как модальное диалоговое окно видимо. Если окно модально исключенный тогда, все его находящиеся в собственности окна и дочерние компоненты также исключаются.
Контекст блокирования (СУРЬМЫ) - набор окон (экземпляры java.awt.Window и все производные классы), которые блокируются модальным диалоговым окном, в то время как это видимо.
Отметьте: Всюду в этом документе понятие "окна" равно высокоуровневому окну в языке программирования Java — другими словами экземплярjava.awt.Windowили любой порожденный class.
Есть четыре поддерживаемых типа модальности:
Приоритет модальности располагается силой блокирования: немодальный, модальный документом, модальный приложением и модальный инструментарием. Это расположение используется, определяя, какое диалоговое окно должно остаться разблокированным, если два видимы и блокируют друг друга. Это естественно отражает вложение контекста диалогового окна блокирования (СУРЬМЫ): у немодального диалогового окна есть пустая СУРЬМА, СУРЬМА модального документом диалогового окна полна в некоторых приложениях, и все приложения запускаются в одном инструментарии.
Примечания о владельцах:
Dialog class, полученный из Window, a Dialog экземпляр автоматически становится корнем документа, если у этого нет никакого владельца. Таким образом, если такое диалоговое окно модально документом, его контекст блокирования пуст, и это ведет себя тот же самый путь как немодальное диалоговое окно.
Примечание реализации: Изменение типа модальности для видимого диалогового окна не может иметь никакого эффекта, пока это не скрывается и затем показывается снова.
Показ окна или немодального диалогового окна: "F"
Все видимые модальные диалоговые окна просматриваются — если F от СУРЬМЫ одного из них, это становится блокированным этим. Если есть несколько таких диалоговых окон, показанное первое используется. Если никакие такие диалоговые окна не существуют, F остается разблокированным.
Показ модального диалогового окна: "M"
Когда модальный диалоговый М. показывают, все видимые окна попадают в одну из трех отличных групп:
После того, как модальный диалоговый М. показывают, это становится блокированным первым показанным диалоговым окном от первой группы (если есть кто-либо), все окна от второго становятся блокированными М., и все окна от третьей группы остаются нетронутыми.
В типичных случаях, когда никакие дочерние диалоговые окна не показывают перед их владельцами, может быть упрощено это правило. (Следующий, упрощенный случай, может не учесть некоторые детали).
Показ модального документом диалогового окна: "M"
Все видимое приложение - и модальные инструментарием диалоговые окна просматривается — если М. от СУРЬМЫ одного из них, это становится блокированным этим. Если есть несколько таких диалоговых окон, показанное первое используется. Если никакие такие диалоговые окна не существуют, М. остается разблокированным.
Показ модального приложением диалогового окна: "M"
Все видимые модальные инструментарием диалоговые окна просматриваются — если М. от СУРЬМЫ одного из них, это становится блокированным этим. Если есть несколько таких диалоговых окон, показанное первое используется. Если никакие такие диалоговые окна не существуют, М. остается разблокированным.
Показ модального инструментарием диалогового окна: "M"
М. остается разблокированным.
| ток/показывать | фрейм & немодальный | документ | приложение | инструментарий |
| - | - | - | - | - |
| документ | блокированный | - | - | - |
| приложение | блокированный | блокированный | - | - |
| инструментарий | блокированный | блокированный | блокированный | - |
После того, как модальное диалоговое окно показывают, все окна от его СУРЬМЫ блокируются, кроме тех, которые блокируют это модальное диалоговое окно.
Сокрытие окна или немодального диалогового окна: "F"
Если F был блокирован каким-либо модальным диалоговым М., это становится разблокированным и удаляется из блокированного списка окон М.
Сокрытие модального диалогового окна: "M"
Если М. был блокирован каким-либо другим модальным диалоговым окном, например, "N", это становится разблокированным и удаляется из блокированного списка окон Н. Затем, все окна и диалоговые окна, блокированные М., становятся разблокированными, и после который те же самые проверки (как в Показе модального диалогового окна: "М."), выполняются для каждого из них в порядке, который им первоначально показали.
Есть два модальных типа исключения, представленные с JDK 6
Примечание реализации: Изменение модального типа исключения для видимого окна не может иметь никакого эффекта, пока это не скрывается и затем показывается снова.Связанные функции AWT
Поверх остальных окон
Когда модальное диалоговое окно, которое не является поверх остальных окон блоками поверх остальных окон окно, их относительный Z-порядок, является неуказанным и зависимым от платформы.
toFront()иtoBack()методы
Модальное диалоговое окно должно всегда быть, прежде всего, своими блокированными окнами. Таким образом, если блокированное окно выявляется, его диалоговое окно блокирования, если таковые вообще имеются, также выявляется и остается выше блокированного окна. Аналогично, если модальное диалоговое окно отправляется спине, все ее блокированные окна отправляются спине, чтобы сохранить их ниже диалогового окна блокирования.Уменьшение, максимизация и закрытие блокированных окон
Когда модальное диалоговое окно блокирует окно, пользователь, возможно, не в состоянии максимизировать или минимизировать блокированное окно — однако, фактическое поведение является неуказанным и зависимым от платформы. В любом случае пользователь не может закрыть блокированное окно в интерактивном режиме — но оно может быть закрыто программно, вызываяsetVisible(false)илиdispose()методы на блокированном окне.Блокированные активации окон
Когда пользователь выбирает блокированное окно, оно может быть выявлено, наряду с блокирующим модальным диалоговым окном, которое тогда стало бы активным окном — однако, фактическое поведение является неуказанным и зависимым от платформы.Сокрытие модального диалогового окна
Когда модальное диалоговое окно, которое в настоящий момент фокусируется, скрывается, это неуказанное и зависимым от платформы, который другое окно станет активным окном. Любое следующее может стать активным окном:Если модальное диалоговое окно, которое будет скрыто, не фокусируется, активное окно остается неизменным.
- Владелец модального диалогового окна - если владелец разблокируется.
Window, который был активным перед этим модальным диалоговым окном полученный фокус - если владелец модального диалогового окна отсутствует или блокируется.Безопасность
Специальное предложение
AWTPermission,"toolkitModality", обязан показывать модальные инструментарием диалоговые окна. Это предотвратило бы, например, блокируя браузер или Сеть Java Запускается (JWS) модальными диалоговыми окнами, показанными от апплетов.То же самое разрешение обязано исключать окно из модальности инструментария. Это предотвратило бы, например, диалоговое окно, которое, как показывают от апплета, не было блокировано модальным диалоговым окном браузера или JWS.
Поддержка платформы
Два
java.awt.Toolkitметоды позволяют Вам проверять, поддерживает ли текущая платформа определенные функции модальности:
isModalityTypeSupported(modalityType)
Возвраты, поддерживается ли указанный тип модальности на текущей платформе. Если режим "M" не поддерживается, и диалоговое окно устанавливается в М. модального, это ведет себя как немодальный.isModalExclusionTypeSupported(modalExclusionType)
Возвраты, поддерживается ли данный модальный тип исключения на текущей платформе. Если тип "E" исключения не поддерживается, и окно отмечается как электронный исключено, это не имеет никакого эффекта.Совместимость
Тип модальности значения по умолчанию модален приложением. Это используется вызовами API:
Dialog.setModal(true),Dialog(owner, true), и т.д.. До JDK 6 тип значения по умолчанию был модален инструментарием, но единственное различие между приложением - и модальность инструментария для апплетов, и приложения, запущенные от Сети Java, Запускаются.Примеры
- Фрейм "F" показывают
- Модальное документом диалоговое окно "Ди" показывают
- F становится блокированным Ди — это находится в том же самом документе
- Модальное документом диалоговое окно "Dii" показывают
- Ди становится блокированной Dii — это находится в том же самом документе
![]()
- Фрейм "F" показывают
- Модальное документом диалоговое окно "Ди" показывают
- F становится блокированным Ди — это находится в том же самом документе
- Модальное документом диалоговое окно "Dii" показывают
- Ди становится блокированной Dii — это находится в том же самом документе
- Ди скрывается
- F становится блокированным Dii — это находится в том же самом документе
![]()
- Фрейм "F" показывают
- Модальное инструментарием диалоговое окно "Ди" создается, но не показывается
- Модальное документом диалоговое окно "Dii" показывают
- F становится блокированным Dii — это находится в том же самом документе
- Модальное приложением диалоговое окно "Diii" показывают
- Dii становится блокированным Diii — это находится в том же самом приложении
- Ди показывают
- Ди становится блокированной Dii — это - свой владелец
- Diii остается разблокированным — он блокирует Dii, и Dii блокирует Ди
![]()
- Фрейм "F" показывают
- Модальное инструментарием диалоговое окно "Ди" создается, но не показывается
- Модальное документом диалоговое окно "Dii" показывают
- F становится блокированным Dii — это находится в том же самом документе
- Модальное приложением диалоговое окно "Diii" показывают
- Dii становится блокированным Diii — это находится в том же самом приложении
- Ди показывают
- Diii становится блокированным Ди — Ди не блокируется
- Ди остается разблокированной
![]()