快速业务通道

Java 6中新型模态对话框API解析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
个文档是一种没有所有者的顶层窗口。它可以被当作单个文档的子窗口和顶层窗口。因为每一个顶层窗口必须属于某文档,所以它的根可以在没有所有者的最顶层窗口中找到。

d22.setBounds(sw - 500 + 32, 232, 300, 200); d22.addWindowListener(closeWindow); d22.setLayout(new BorderLayout()); l = new Label("DOCUMENT_MODAL"); l.setBackground(Color.BLUE); l.setAlignment(Label.CENTER); l.setFont(labelFont); d22.add(l, BorderLayout.CENTER); //第三个文档 f3 = new Frame("Excluded Frame"); f3.setModalExclusionType( Dialog.ModalExclusionType.APPLICATION_EXCLUDE);

一个被设置为APPLICATION_MODAL的对话框将会阻断在同一Java程序中的所有的顶层窗口,除了它自己的孩子窗口层次之外。如果若干applet在一浏览器中被调用,那么可以把它们当作或者是独立的应用程序或者是单个的程序。这种行为的实现要依赖具体的环境而定。

注意,下面的f3不会被APPLICATION_MODAL和DOCUMENT_MODAL对话框所阻断。

f3.setBounds(32, sh - 200 + 32, 300, 200); f3.addWindowListener(closeWindow); f3.setLayout(new BorderLayout()); l = new Label("EXCLUDED FRAME"); l.setBackground(Color.GREEN); l.setAlignment(Label.CENTER); l.setFont(labelFont); f3.add(l, BorderLayout.CENTER); b = new Button("I''m alive!"); f3.add(b, BorderLayout.SOUTH); f3.setVisible(true); // 第四个文档 f4 = new Frame("Parent Frame"); f4.setBounds(sw - 300 + 32, sh - 200 + 32, 300, 200); f4.addWindowListener(closeWindow); f4.setLayout(new BorderLayout()); l = new Label("FRAME"); l.setBackground(Color.GRAY); l.setAlignment(Label.CENTER); l.setFont(labelFont); b = new Button("Show file dialog"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fd4.setVisible(true); } }); f4.add(b, BorderLayout.SOUTH); f4.setVisible(true); fd4 = new FileDialog(f4, "File Dialog", FileDialog.LOAD); 为了向后兼容性起见,File对话框缺省是APPLICATION_MODA。 fd4.setBounds(sw - 400 + 32, sh - 300 + 32, 300, 200); } }

Java 6中新型模态对话框API解析(4)

时间:2011-02-15 天极 朱先忠

五、 有关AWT特性

下面是其它一些在使用新的模态模态时要了解的AWT特性。

(一) 总在最上面

当一个并不总是位于顶层的模式对话框阻断一个总是位于顶层的窗口时,它们的相对Z-序未特别指出并且是平台依赖的。下列实例表明这个问题:

JFrame f = new JFrame(...); f.setAlwaysOnTop(true); f.setVisible(true); JDialog d = new JDialog(frame, "Dialog", true); d.setVisible(true);

这段代码制造了一种矛盾:一方面,d必须位于f之上(因为它是一个模式对话框并且应该阻断f)。而另一方面,f必须必须位于d之上,因为f被设置为总是位于顶层,而d不是。如此情形是未特别指出的。然而,总是有解决办法:如果d也被设置为总是位于顶层(d.setAlwaysOnTop(true)),那么该对话框将在任何时候位于框架窗口之上。

(二) toFront()和toBack()方法

一个模式对话框应该总是位于所有的被其阻断的窗口之上。这样,如果一被阻断的窗口被送到前面,那么它的阻断对话框,如果有的话,也被送到前面并且位于被阻断的窗口之上。同样,如果一模式对话框被送到后面,那么所有它的被阻断的窗口被送到后面以使其位于阻断对话框下面。

(三) 最小化,最大化和关闭被阻断的窗口

当一个模式对话

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号