Java 6中新型模态对话框API解析 - 编程入门网
及以前的版本中,允许传递null作为JDialog或Jwindow的父窗口。这意味着,一不可见的共享所有者的框架窗口将成为这个对话框或窗口的父窗口。这个共享所有者的框架窗口的创建是为了创建无父窗口对话框。这种情况直到Java SE 6才得以成功-Java SE 6引入了新型的文档-模式对话框能够阻止所有的窗口使用相同的文档。
因而,工具箱会知道这样的对话框或窗口是没有null父窗口的。在Mustang中,仍然允许传递null作为一个父窗口到旧式的JDialog或JWindow构造器中。并且这可以完成相同的事情:其成为共享的所有者框架窗口而不是成为父窗口,这也照顾了向后兼容问题。然而,现在能把null传递到Dialog或Window构造器中,而且也能传递到新的JDialog或JWindow构造器中,这意味着这些对话框能够真正成为无父窗口。 下面列举的是一些比较有用的构造器: JDialog(Dialog owner) 创建一个无标题并用一个指定的对话框作为其父窗口的无模式对话框 JDialog(Dialog owner,boolean modal) 用指定的所有者Dialog和模态创建一个具有指定的模态和所有者对话框的对话框 JDialog(Dialog owner,String title) 创建一个具有指定的标题和所有者对话框的无模式对话框 JDialog(Dialog owner,String title,boolean modal) 创建一个具有指定的标题,模态和所有者对话框的对话框 JDialog(Dialog owner,String title,boolean modal,GraphicsConfiguration gc) 创建一个具有指定的标题,模态和所有者对话框和GraphicsConfiguration的对话框 JDialog(Frame owner) 创建一个无标题但用指定的框架作为其所有者的无模式对话框 JDialog(Window owner,String title,Dialog.ModalityType modalityType) 创建一个具有指定的标题,模态和所有者窗口的对话框 有关这里每个构造器的更多细节请参考Mustang有关文档。 四、 与所有者窗口一同工作 如前面所提及的,当一个窗口或一个对话框是另一个窗口的父亲时,就称为该父组件"拥有"它的孩子。在此,当在新的模态模式下与所有者窗口一同工作时,你应该注意几件事情: 创建一个没有所有者的文档-模式对话框。在这种情况中,因为Dialog是Window的一个子类;所以,如果一个Dialog实例没有所有者的话,它自动地成为该文档的根。这样,如果这个对话框是文档-模式的,那么它的阻断范围是空的,并且其行为就象一个无模式对话框。 创建一个有所有者的应用程序-模式或工具箱-模式对话框。一个应用程序-模式或文档-模式对话框的阻断范围并不依靠它的所有者。在这种情况中,所有者所唯一影响的是Z-顺序(顶级组件的相对顺序)。如果你有两个窗口,一个遮住另一个,第一个窗口位于第二窗口上面,那么最顶端的窗口通常是一个活动的窗口。一个相关概念是"总是位于顶层",这时一个窗口总是出现在系统中所有其它窗口之上。对话框总是会位于它的所有者的上部。 在运行时刻改变模态类型。改变一可见的对话框的模态类型可能没有什么影响,直到该对话框被隐蔽并且被再次显示。 下列代码实例展示了新型的模态API的应用,其中包括现在可灵活在应用于对话框窗口的java.awt.Dialog.ModalExclusionType和 java.awt.Dialog.ModalityType。 Java 6中新型模态对话框API解析(3)时间:2011-02-15 天极 朱先忠图2显示出当你运行该代码后的最终结果。
图2: 被阻断的和未被阻断的对话框 一个使用DOCUMENT_MODAL的对话框会阻止相同文档中的所有顶层窗口的输入,除了它自己的子窗口层次之外。一 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |