www.goodsgy.com 如前面所提及的,当一个窗口或一个对话框是另一个窗口的父亲时,就称为该父组件"拥有"它的孩子。在此,当在新的模态模式下与所有者窗口一同工作时,你应该注意几件事情:
·创建一个没有所有者的文档-模式对话框。在这种情况中,因为Dialog是Window的一个子类;所以,如果一个Dialog实例没有所有者的话,它自动地成为该文档的根。这样,如果这个对话框是文档-模式的,那么它的阻断范围是空的,并且其行为就象一个无模式对话框。
·创建一个有所有者的应用程序-模式或工具箱-模式对话框。一个应用程序-模式或文档-模式对话框的阻断范围并不依靠它的所有者。在这种情况中,所有者所唯一影响的是Z-顺序(顶级组件的相对顺序)。如果你有两个窗口,一个遮住另一个,第一个窗口位于第二窗口上面,那么最顶端的窗口通常是一个活动的窗口。一个相关概念是"总是位于顶层",这时一个窗口总是出现在系统中所有其它窗口之上。对话框总是会位于它的所有者的上部。
·在运行时刻改变模态类型。改变一可见的对话框的模态类型可能没有什么影响,直到该对话框被隐蔽并且被再次显示。
下列代码实例展示了新型的模态API的应用,其中包括现在可灵活在应用于对话框窗口的java.awt.Dialog.ModalExclusionType和 java.awt.Dialog.ModalityType。图2显示出当你运行该代码后的最终结果。
www.goodsgy.com
import java.awt.*; import java.awt.event.*; import sun.awt.*; public class ModalityDemo2 { // 第一个文档(red):框架,无模式对话框,文档-模式对话框 private static Frame f1; private static Dialog d11; //……省略,详见所附源码文件 |
www.goodsgy.com
www.goodsgy.com
 图2: 被阻断的和未被阻断的对话框 |
www.goodsgy.com
www.goodsgy.com
www.goodsgy.com
上一页 [1] [2] [3] [4] [5] [6] 下一页