快速业务通道

用IFrame跟上潮流 - 将IFrame窗口转换为炫目的应用程序窗口 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
这个类的子类包括 IWindowTitleBar 和 IContentPane 。 IBorderPanels 通过触发 WindowChangeEvents 与 IFrame 通信,IFrame 对它进 行处理并作出响应。

通过分析体系结构中每一个组件,就会清楚为了定制自己的 IFrame,需要在 什么地方和什么时候改写默认功能。

图 4. IFrame 体系结构

用IFrame跟上潮流 - 将IFrame窗口转换为炫目的应用程序窗口 - 编程入门网

IFrame

IFrame 是用于创建自定义框架的主类。除了从 IFrame 的父类 JFrame 继承 的方法外, IFrame 还增加了几个 public 方法,可以用来改变 框架的基本外观 组件。

IFrame 的默认行为与 JFrame 一样,所以 JFrame 和默认 IFrame 可以互换 。不过,通过调用 IFrame 中可以使用的几个 public 方法,可以只用几行代码 迅速改变窗口的外观。

注:在 JFrame 对应的 getContentPane() 和 setContentPane() 的位置上应 当使用 IFrame 的 getIContentPane() 和 setIContentPane() 方法。在 IFrame 中添加的所有组件都应当调用 myIFrame.getIContentPane().add() 。用 getContentPane() 在 IFrame 中添加组件或者用 setContentPane() 设置内容窗 格会导致不可预测的、并且很可能是错误的行为。

IBorderComponent

IBorderComponent 是在 IFrame 中加入的所有可以控制 Windows 的位置和调 整大小的 JPanel 的父类。乍看之下,最可能的子类是 IWindowTitleBar 和 IContentPane ,因为它们看起来是惟一进行调整大小和移动的类。不过在当前的 应用程序中,有许多是用应用程序窗口内的组件调整应用程序窗口大小或者移动 它的。例如,所有 Microsoft Office 应用程序现在都在应用程序窗口右下角有 一个小的 widget,可以用来调整大小(可以去自己试一试)。所以如果设计一个 包含所有类型的调整大小和移动窗口的 widget,那么所要做的就是继承 IBorderComponent ,这些 widget 就会具有与用 IWindowTitleBar 和 IContentPane 得到的同样的移动和调整大小的能力。

IWindowTitleBar

自定义框架的大部分工作都是在 IWindowTitleBar 中进行的。与 IFrame 一 样, IWindowTitleBar 有许多 public 方法,不用继承它或者自己编写方法就可 以改变标题栏的属性。虽然用这些方法可以容易地对外观进行改变,但是所有高 级的设计都应当继承 IWindowTitleBar 以使用 paintComponent() ,这个方法可 以做出更复杂的标题栏。(关于复杂的标题栏以及它是如何继承 IWindowTitleBar 的内容,请参阅下面 例 3。)

除了改变标题栏的背景颜色, IWindowTitleBar 还提供了许多功能,可以用 来控制标题栏中的 IWindowButtons 。在默认情况下, IWindowTitleBar 包含 Microsoft Windows 应用程序中可以看到的三个标准窗口按钮,但是可以容易地 删除它们或者添加自己的具有不同功能的窗口按钮。可以改变按钮的大小和颜色 ,如果创建高级的窗口按钮,那么可以继承 IWindowButton 以绘制所希望的任何 形状和颜色方案(尽管改变 JButton 的外观超出了本文的范围)。

也许自定义 IWindowTitleBar 的最有技巧性的方面是管理边框。在默认情况 下,窗口标题栏是标准的矩形边框,但是如果创建一个具有非标准边框的复杂标 题栏(请参阅 例 4),那么必须继承 IWindowTitleBar 并覆盖 isMouseOnBorder() 和 isInsideTitleBar() ,以自己管理边框。

用IFrame跟上潮流 - 将IFrame窗口转换为炫目的应用程序窗口(4)

时间:2011-05-20 IBM Michael Abernethy

IContentPane

IContentPane 提供了在其中加入所有应用程序组件的基本容器,很像 JFrame 中的 JFcontentPane。 因为它也继承了 IBorderComponent ,所以在默认情况下 它也管理自己的边框。 IContentPane 边框的默认实现也是矩形。要想得到非矩 形的复杂边框,需要继承 IContentPane 并通过 重载 isMouseOnBorder() 自己 处理边框

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号