设计具有本机性能的跨平台Java UI:使用JNI来访问SLIK皮肤接口 - 编程入门网
e src distribution of this article
// slider test: maps to [slider_volume] in skindata
volume = new WSlider("volume");
volume.addSliderListener(this);
skin.registerWidget(volume);
// popup menu sample
String [] menus =
{
// menu #1
"Menu 1" + WMenu.SUBMENU_DIVIDER + "Submenu-11" + WMenu.SUBMENU_DIVIDER +
"Submenu-12",
// menu #2
"Menu2" + WMenu.SUBMENU_DIVIDER + "Submenu21" + WMenu.SUBMENU_DIVIDER +
WMenu.MENU_DIVIDER + WMenu.SUBMENU_DIVIDER + "SubM31" ,
WMenu.MENU_DIVIDER,
"Menu3",
"Menu4"
};
popup = new WMenu("popup", menus, skinHandle);
popup.addMenuListener(this);
skin.registerWidget(popup, menus);
...
拨号盘小部件(广播调谐器 / 播放器的典型组件)应该具有一个类似如下的 声明: WDial position = new WDial("position") 这里, position 是皮肤数据文件( skindata)中定义的一个键,该文件包含诸如几何形状、图 像等属性。之后, position.addDialListener(this)调用将设置主类来监听由 这个小部件激发的事件。 最后, skin.registerWidget(position)将从 C 层级 联调用 Java 层,然后返回。相同的方法序列也适用于所有 JSLIK 小部件。 设计具有本机性能的跨平台Java UI:使用JNI来访问SLIK皮肤接口(6)时间:2011-09-07 ibm Vladimir Silva探索源代码 本文已经提供了关于 SLIK 和 Java 平台在实践中如何协同工作的介绍。为 了真正理解它究竟是如何工作的,您需要运行并研究源代码。随本文分发的代码 包包含以下文件夹结构: Slik_jni 文件夹结构
还有两个提供用于测试目的的 shell 脚本:rundemo.bat 和 rundemo.sh。 双击针对您的平台的相应脚本将会运行演示程序,并加载默认的皮肤,如图 5 所示。 图 5. PDA 演示皮肤 按 Play 按钮将打开皮肤编辑器,您可以使用它来浏览或修改构成此皮肤的 不同小部件。按 Back 按钮将启动打开文件对话框,您可以使用它来加载所提供 的许多示例皮肤。 可以容易地使用自己最喜欢的 IDE 来编译该 Java 源代码。代码包中还提供 了二进制版本,不过如果想要自己编译 C 代码,相应的编译说明已包括在这个 项目的 README 文件中。本文中的代码已在以下平台上测试过: Microsoft Windows 2000 和 XP。 Red Hat Linux 8.x 和 9,以及 SuSE Linux Workstation 8.x,两者都是基 于 x86 的体系结构。 结束语 要成为桌面市场的重要竞争者,Java 开发人员被迫依赖 Java 本机接口 (Java Native Interface,JNI)来提供特定平台的用户所预期的外观和感觉以 及性能水平。 随着 Linux 在桌面操作系统市场的增长,高级用户界面将成为开发人员追求 的主要目标。如果 Linux 要与 Windows 竞争,它需要具有易用性和出色的图形 和视觉效果。GIMP 工具包为这种转变奠定了基石。 如今的 API,比如 WinAmp 和 Xine,都是平台相关的。SLIK 走出了实现统 一的第一步。而且由于 JNI 可用于访问 SLIK API,因此 SLIK 代表了可同时供 两个阵营使用的潜在工具。Java 开发人员可以编写具有本机 GUI 性能水平的桌 面应用程序,而 Linux 开发 |
||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |