快速业务通道

使用JRuby和Swing进行跨平台开发 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
经存在,并试图使用 Ruby 代码简化 Swing 对象的创建。

最后是 Monkeybars 库采用的方法(请参阅 参考资料)。现在已经有很多非常好的、免费的图形化 Swing UI 布 局编辑器。和之前提到的 GUI 工具包(例如 Fox 和 GTK)的使用一样,对于不常见的对话框,不需要 UI 编辑器。但是,除此之外,这类工具是不可替代的,对于一个高级的桌面应用程序,无视这些工具而 手工编写 UI 并无益处。

Monkeybars

Monkeybars 项目源于 David Koontz 在 Happy Camper Studios 中的产品开发,并在此基础上有所发展,试图创建可测试、可维护的复杂的 Ruby 桌面 应用程序。它受到了积极的维护,并且可以完全免费使用。

Monkeybars 是一个开源 Ruby 库,它 使用一种模型、视图、控制器(MVC)设计模式将已有的 Java Swing 类(即定义 Swing UI 的已编译 Java 类)与 Ruby 代码连接起来。MVC 的目的在于将视图逻辑和 UI 组件与应用程序逻辑相分离。

由于使用 Java 语言和 Swing 库,Monkeybars 建立在成熟、健壮的技术之上。与目前用于 JRuby 的其他 Swing 库不同,它非常适合于构造大型的、复杂的、多面板的应用程序。您将看到,创建 Monkeybars 应用程序需要承担一定的开销,所以对于简单的窗体来说它可能不是最好的选择。但是,对 于有以下需求的 JRuby 桌面应用程序来说,它是一个合理的选择:

可靠的跨平台部署(确保用户 安装了最新的 JVM)

有大量具有任意复杂度的 UI 部件可供选择

复杂的 UI 窗体和面板构造和交互

为什么 使用 Swing 而不是 SWT?

Monkeybars 使用 Swing 而不是 Standard Widget Toolkit(SWT), 原因如下:

Swing 是 Java 编程的一部分;使用 Java 编程的用户也具备 Swing。

Swing 可对组件的行为进行更细粒度的控制。

Swing 组件在外观方面具有更大的灵活性。

和 Profligacy 一样,Monkeybars 不隐藏 Swing API。但是,由于它使用编译过的 UI 类,因此可以充分利 用任何工具或应用程序来生成真正的布局。取决于应用程序的复杂性,几乎不可避免的是,在编写 Ruby 代码的过程中,某些时候需要参考 Swing 组件 API 文档和代码示例才能知道怎么做(但是由于 JRuby 与 Java 库的良好集成,很容易将那样的 Swing 代码包装在一个 Ruby API 中,以便于重用)。使用 Monkeybars 构建的程序可能有不同程度的复杂性,但是可以遵循一些基本的模式来使代码易于维护。

使用JRuby和Swing进行跨平台开发(5)

时间:2011-11-29 IBM developerworks James Britt

实现 MVC 的 Monkeybars 方法

MVC 模式已经有很长的历史了,并且有很多变体。对于 Monkeybars,基本前提是对于每个 Swing 帧(也就是容纳各种组件或 widget 的 UI 对象;在某些情况 下,可能是一个模态面板),有 3 个 Ruby 文件:一个模型、一个视图和一个控制器。模型类存放实际 的业务逻辑,并管理与应用程序部分对应的数据。视图或控制器用于作为与模型进行交互的手段,而模型 并不知道它们的存在。将对视图和控制器的引用放在模型之外,可以使模型更易于开发和测试。

视图是另一个 Ruby 文件,它引用一个特定的 Java 类,这个 Java 类包含编译过的 Swing 代码。视图 管理 Swing 组件与模型数据的交互。视图可以直接与模型交互,但是它也使用模型的一个副本,以便将 数据传递给控制器。在设计模型类时要谨记这一点,因为它最终要为两个目的服务。模型的主实例保持长 期状态,并提供应用程序逻辑;而视图使用的副本实际上是一个可任意使用的数据访问对象。模型应该易 于实例化,并为视图使用的任何数据提供基本的访问方法。

视图并不直接与控制器交互。相反, 有一个信号系统来抽象控制器与视图之间的交互。这种解耦使得视图和控制器更易于测试。

这段 描述有意简

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