Java 6中新型模态对话框API解析
http://tech.ddvip.com 2008年01月22日 社区交流
内容摘要:Java 6,代码名称为Mustang,已经通过一种新的抽象窗口工具箱(AWT)模态模型解决了此问题以及其它几个问题。这种新型模型允许开发者根据其选择的模态类型指定范围或限制一个对话框的模态阻断。
•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-顺序(顶级组件的相对顺序)。如果你有两个窗口,一个遮住另一个,第一个窗口位于第二窗口上面,那么最顶端的窗口通常是一个活动的窗口。一个相关概念是"总是位于顶层",这时一个窗口总是出现在系统中所有其它窗口之上。对话框总是会位于它的所有者的上部。
•在运行时刻改变模态类型。改变一可见的对话框的模态类型可能没有什么影响,直到该对话框被隐蔽并且被再次显示。
来源:天极 作者:朱先忠 责编:豆豆技术应用