一.引言
对话框,是指一个最顶层的拥有标题与边框的弹出窗口,典型地应用于用户进行某种形式的输入操作.在jdk 5.0与早期版本中,构建一个对话框时,它必须拥有一个作为它的所有者窗口的框架窗口或另一个对话框,即使窗口是不可见的.当用户最小化一个可见对话框的所有者窗口时会自动隐藏该对话框;而当用户随后恢复所有者窗口时,该对话框再次出现.
在jdk 5.0与早期版本中的模态模型有一些局限.而且,这种模态模型也存在一些问题.最著名的问题涉及到javahelp工具窗口.javahelp,java应用程序中提供帮助信息的api,使用独立的窗口来显示所有的必要信息.然而,如果应用程序显示任何模式对话框,例如一标准save as对话框,那么该对话框将阻止用户与javahelp工具窗口进行交互. 【程序编程相关:微软将免费为所有windows系统提供反】
一个对话框可以是无模式的也可以是模式的.除了该对话框的所有者的窗口之外,模式对话框将阻止在应用程序中其它顶层窗口的输入.模式对话框捕获窗口焦点直到其被关闭为止(经常响应于一次按钮点击).另一方面,一个无模式对话框允许用户改变它的状态,而此时其它窗口仍然可拥有焦点.后者常用于工具栏窗口中,例如你在一个图像编辑程序中所见的. 【推荐阅读:让Win2003自我管理后台打印】
二.模态类型 【扩展信息:Windows六大用户组功能分析】
但是java 6,代码名称为mustang,已经通过一种新的抽象窗口工具箱(awt)模态模型解决了此问题以及其它几个问题.这种新型模型允许开发者根据其选择的模态类型指定范围或限制一个对话框的模态阻断.如此模态类型也允许窗口与对话框成为真正的无父窗口,也即,拥有一个null父窗口,它可以帮助限制窗口的范围与对话框的模态.
java 6支持四种模态类型:
•无模式.无模式对话框在自己为可见时并不阻断任何其它窗口.
•文档-模式.文档-模式对话框阻断所有的来自同一文档的窗口,除了那些来自于它的子层次上的窗口外.在此意义中,一个文档是指一个窗口层次-框架窗口,对话框等等,它们共享一个文档根窗口.文档根窗口是所有没有所有者的最顶级窗口.
•应用程序-模式.应用程序-模式对话框能够阻断同一应用程序中的所有窗口,除了那些来自于它的子层次上的窗口外.如果在浏览器中激活若干applet,那么浏览器将把它们当作独立的应用程序或者作为一个单一的应用程序.具体情况依赖实现的具体环境.
•工具箱-模式.工具箱-模式对话框能够阻断所有的运行于同样的工具箱中的窗口,除了那些来自于它的子层次上的窗口外.如果激活多个applet,那么它们都运行于同样的工具箱上.因此,从applet中显示的工具箱-模式对话框可能影响其它的applet.
... 下一页