全面剖析Java6中新型模态对话框API.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
摘录 by Bill Chen(billchen@) 全面剖析 Java 6 中新型模态对话框API 一、引言 对话框,是指一个最顶层的拥有标题和边框的弹出窗口,典型地应用于用户进行某种形式的输入操作。 在 JDK 5.0 和早期版本中,构建一个对话框时,它必须拥有一个作为它的所有者窗口的框架窗口或另一个 对话框,即使窗口是不可见的。当用户最小化一个可见对话框的所有者窗口时会自动隐藏该对话框;而当 用户随后恢复所有者窗口时,该对话框再次出现。 一个对话框可以是无模式的也可以是模式的。除了该对话框的所有者的窗口之外,模式对话框将阻止 在应用程序中其它顶层窗口的输入。模式对话框捕获窗口焦点直到其被关闭为止(经常响应于一次按钮点 击)。另一方面,一个无模式对话框允许用户改变它的状态,而此时其它窗口仍然可拥有焦点。后者常用 于工具栏窗口中,例如你在一个图像编辑程序中所见的。 在 JDK 5.0 和早期版本中的模态模型有一些局限。而且,这种模态模型也存在一些问题。最著名的问 题涉及到 JavaHelp 工具窗口。JavaHelp,Java 应用程序中提供帮助信息的 API ,使用独立的窗口来显示 所有的必要信息。然而,如果应用程序显示任何模式对话框,例如一标准 Save As 对话框,那么该对话框 将阻止用户与 JavaHelp 工具窗口进行交互。 但是 Java 6,代码名称为 Mustang,已经通过一种新的抽象窗口工具箱(AWT)模态模型解决了此问题 以及其它几个问题。这种新型模型允许开发者根据其选择的模态类型指定范围或限制一个对话框的模态阻 断。如此模态类型也允许窗口和对话框成为真正的无父窗口,也即,拥有一个 null 父窗口,它可以帮助限 制窗口的范围和对话框的模态。 二、模态类型 Java 6 支持四种模态类型: ·无模式。无模式对话框在自己为可见时并不阻断任何其它窗口。 ·文档-模式。文档-模式对话框阻断所有的来自同一文档的窗口,除了那些来自于它的子层次上的窗口 外。在此意义中,一个文档是指一个窗口层次-框架窗口,对话框等等,它们共享一个文档根窗口。文档根 窗口是所有没有所有者的最顶级窗口。 ·应用程序-模式。应用程序-模式对话框能够阻断同一应用程序中的所有窗口,除了那些来自于它的子 层次上的窗口外。如果在浏览器中激活若干 applet,那么浏览器将把它们当作独立的应用程序或者作为一 个单一的应用程序。具体情况依赖实现的具体环境。 ·工具箱-模式。工具箱-模式对话框能够阻断所有的运行于同样的工具箱中的窗口,除了那些来自于它 的子层次上的窗口外。如果激活多个applet,那么它们都运行于同样的工具箱上。因此,从 applet 中显示 的工具箱-模式对话框可能影响其它的 applet 。 正如以前的 JDK 一样,一个对话框在缺省情况下是无模式的。但是如果你在 Mustang 中构造一个模 式对话框的话,现在它将缺省使用应用程序-模式类型。另外,模式和无模式对话框的行为已经在 Mustang 作了改变,它们可以一直出现在其父窗口的顶部。 模态优先权是由阻断强度决定的。这种模态优先权帮助处理两个对话框可见并且能够彼此阻断的情形。 优先权按升序排列分别是:无模式,文档-模式,应用程序-模式和工具箱-模式。这种优先权自然地反映了 一个对话框的范围阻断的嵌套情形。一个无模式对话框有一个空范围的阻断。文档-模式对话框的范围阻断 是在特定的应用程序中完成的,并且所有的应用程序是运行于一种工具箱中。图 1 展示了这样的一个例子。 图1:对话框的模态优先权 注意,这种新型的模态模型并没有实现一个系统模态,这将会阻断(Java 或其它)所有被显示在桌面上 的应用程序,而只有一个模式对话框处于活动状态。 三、了解新的构造器 能提供真正无父窗口而不中断向后兼容对于 AWT 开发小组来说是一个挑战。在 JDK 5.0 及以前的版 本中,允许传递 null 作为 JDialog 或 Jwindow 的父窗口。这意味着,一不可见的共享所有者的框架窗口将 成为这个对话框或窗口的父窗口。这个共享所有者的框架窗口的创建是为了创建无父窗口对话框。这种情 况直到Java SE 6 才得以成功-Java

文档评论(0)

zhaojf9409 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档