设计具有本机性能的跨平台Java UI:使用JNI来访问SLIK皮肤接口 - 编程入门网
:
SLIK 包括一组增强的小部件,比如按钮、菜单、窗口、列表,以及当前的窗 口工具包所没有提供的高分辨率图像。 该 API 可用于多平台设计,因为它的核心库可同时在 Microsoft Windows 和类 UNIX 系统下编译。 SLIK 可以实现为一个 Windows DLL 或 UNIX 共享对象库,这意味着它可以 跨多个应用程序重用,并且易于维护。 SLIK 软件由 GQmpeg 小组在 GNU 公共许可证(GNU Public License,GPL) 之下提供。GQmpeg 小组提供的 SLIK 版本仅在类 UNIX 系统上作为可执行文件 来编译。我创建了一个修改后的版本,它可以同时工作在 Win32 和 UNIX 系统 上;这个版本以二进制的形式随本文的源代码一起提供(同时包括 Windows DLL 和 UNIX 共享对象或 SO 版本)。 我还同时提供了用于 UNIX 和 Windows 环境的 makefile。 SLIK-Java 对象层次 图 2 中的 UML 图描绘了带皮肤的窗口对象层次和 JSLIK 包的本机层。 JSLIK 对象层次的顶部是 GtkSkin 类。它封装了一个带皮肤的窗口,并为这样 一个窗口提供以下有用功能:加载、卸载、最小化、图标化,等等。它还能够监 听诸如鼠标移动、单击、子窗口的派生以及抛出异常等事件。它不同于常规窗口 的地方在于,其几何形状和它们的所有子部件都基于从规格文件中加载的高分辨 率图像。 GtkSkinNatives 类提供了调用实际绘制窗口的低级本机方法的接口。 图 2. 非矩形窗口对象层次 图 3 中的 UML 图描绘了可以使用 SLIK 来创建的各种窗口小部件的层次。 图 3. 小部件对象的 UML 图 设计具有本机性能的跨平台Java UI:使用JNI来访问SLIK皮肤接口(3)时间:2011-09-07 ibm Vladimir Silva这些窗口小部件封装了皮肤规格文件中定义的属性,该文件默认被命名为 skindata ,并且连同必要的图像文件一起位于皮肤目录中。窗口小部件的属性 包括几何 XY 坐标、透明度,以及背景图像。清单 1 包含了节选自本文的示例 皮肤之一的规格文件的内容。 清单 1. 皮肤规格文件节选
欲了解关于这个文件的格式的完全描述,请参阅随本文的源代码提供的 SKIN-SPECS 文档。 小部件概述 SLIK 提供了 WinAmp 风格的皮肤小部件,比如按钮、滑块、拨号盘、菜单、 子窗口、标签和列表。正如您已经看到的那样,诸如图形、标签等小部件属性是 从一个默认名为 skindata 的皮肤规格文件中读取的。其中一些小部件包括拨号 盘旋钮(专门为多媒体播放器设计)、一个高度可定制的图形列表(通常用于播 放列表)、菜单、按钮、标签和滑块。这些小部件的基本版本如图 4 所示。 图 4. 示例小部件 这些抽象小部件能够加载远远优于系统的默认窗口管理器的特定图形样式。 然而,许多小部件没有在媒体播放器中广泛使用,它们当前也不是小部件集的组 成部分。本文后面的 图 5给出了这些增强的图形样式的一个例子。该图描绘了 一个具有许多美妙图形的类似 PDA 外观的应用程序。 用 Java 语言编写的一个示例皮肤客户机 SLIK 的 JNI 接口能够为 Java 客户机提供同时在 Windows 和 UNIX/Linux 环境中创建皮肤对话框的能力。像使用传统 GUI 工具包来构建的类一样,带皮 肤的客户端将监听高级事件,比如窗口的关闭、最小化或最大化。然而,这个基 于 SLIK 的类需要 SLIK 专用的接口来监听任何带皮肤的小部件的这些事件。清 单 2 说明了这些接口。(以下所有清单都取自 SkinDemo.java,这是本文与本 文配套的代码包的一部分。请 单击这里来获得这个文件的彩色语法显示的完整 清单。) 清单 2 SLIK 事件接口
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |