技术开发 频道

用 IFrame 跟上潮流

  【IT168 技术文章】自 Java 1.0 开始,UI 开发人员就一直在寻找自定义应用程序窗口的方法。在引入了 Swing 后,这个问题愈发突出了,因为开发人员可以创建具有令人惊叹的更复杂的、更高级 widget,但是却受到它所在的 Frame 或者 JFrame 和它们的特定于操作系统的外观的限制。常常可以看到应用程序在框架边框内部看起来很好,但是 Microsoft Windows 的蓝色标题栏却大刹风景的情况。更糟的是,应用程序有 70 年代的 Motif 外观,但却使用了 Microsoft Windows 的颜色光滑渐变的标题栏。

  JFrame 的外观问题

  如图 1 所示的这些外观问题,展现了 UI 开发人员所面临的许多问题:应用程序在各个平台上看起来是不一样的,因为 JFrame 的属性(标题栏颜色、边框、形状等)无法使用公共外观,它们是特于定操作系统的。

  图 1. JFrame 的外观是如何变化的

  解决方案看起来很很明显:一个独立于操作系统的框架,它具有 JFrame 提供的所有功能——注册到 OS 窗口管理器、调整大小/重绘管理、最大化/最小化/恢复,同时又可以设置这些组件的外观。Java 1.3 提供了 JFrame 的功能,但牺牲了定制能力。

  在 Java 1.4 中,Sun 在 Frmae 类中引入了一个新的 setUndecorated() 函数,它走到了另一个极端——它可以自定义框架中的所有内容,但是缺少了 Java 1.3 中大多数特定于操作的好处。

  IFrame 类是对这个问题的期待已久的解决方案。通过弥合这两个问题之间的距离,IFrame 提供了一个使用简单、同时又很强大的解决方案,可以根据需要对框架进行或多或少的自定义,同时不会牺牲使用 JFrame 时所习惯的任何特定于操作系统的功能。不用再守着同样的陈旧的蓝色标题栏、同样的陈旧的三个窗口按钮和同样的陈旧的斜面边框。虽然对于普通应用程序来说,JFrame 仍然很有用,但是有些应用程序需要比它所能提供的更多的功能,如:

  所有具有自定义外观的应用程序。

  所有用于体现公司的某种品牌形象的应用程序。

  所有需要对其窗口具有更多控制的应用程序。

  IFrame 通过提供一个容易使用的 API 而突破了 JFrame 的限制,这个 API 可以生成具有任何状态的框架、可以有任何颜色和状态的标题栏、可用于更多功能的标题栏按钮、具有任何颜色和大小的边框、按钮旁边的组件和标题栏中的标签及甚至是透明性。

  本文介绍 IFrame 框架。首先描绘这个体系结构中的每一个类及其作用。当然,学习如何使用 IFrame 的最好方法是使用例子,所以我举了四个使用 IFrame 的应用程序的例子,它们具有不同的复杂性。阅读了本文及学习 IFrame 体系结构后,应当能够让应用程序窗口从乏味窗口(图 2)变为炫目窗口(图 3)。

        图 2. 使用 IFrame 之前

        图 3. 使用 IFrame 之后

      

0
相关文章