使用JRuby和Swing进行跨平台开发 - 编程入门网
化和忽略了一些细节。在幕后,视图与控制器之间有更紧密的交互。基础设施需要某种手段来 协调行为。Monkeybars 的目的不是束缚您的手脚,而是帮助您创建易于测试和维护的代码。但是,作为 开发人员,适当的时候可以随意绕过计划中的 API。
在控制器类中,可以定义 Swing 事件(例如 单击按钮或更改文本字段)的处理程序,并控制模型的状态。控制器保留对模型主实例的引用。它并不直 接与视图通信。 当一个控制器需要从视图获取数据时,视图提供模型的一个副本,其中包含当前 的 UI 内容。然后,控制器可以决定用该数据更新模型的主实例,或者根据这些值采取某种操作。控制器 还可以告诉视图更新自身,并传回更新后的值。在示例应用程序中,您将看到这一点。 使用 Monkeybars 的一个示例 JRuby Swing 应用程序 为了让您感觉一下如何使用 Swing 和 Ruby 创建 一个桌面应用程序,我将带您完成一个简单的用 Monkeybars 创建的程序(要获得完整的示例源代码,请 访问 下载 中的链接)。 准备工作 首先,需要准备好一些东西: 获得一个 jruby -complete.jar(参考资料 中有下载链接)。 安装 Monkeybars 库。可以作为 gem 安装它: sudo gem install monkeybars 也可以从 gitorious.org 上的库中获取 最新的源代码。 安装 rawr gem: sudo gem install rawr 严格地讲,rawr 对于编写 Monkeybars 应用程序不是必需的,但是它提供了很多有用的 rake 任务,可 以将 JRuby 应用程序转换成可执行的 JAR 文件。本文的示例将使用它。 使用JRuby和Swing进行跨平台开发(6)时间:2011-11-29 IBM developerworks James Britt应用程序的基础 示例应用程序是一个 “flash card” 程序,它读取一个文本文件,其中定义有很多 “ 卡片”。它循环运行,直到被关闭,它周期性地短暂显示和隐藏自己。基本上,它是一个学习工具 。对于这个示例,这些卡片是一组德语单词和短语。该程序还读取一个配置文件,该文件定义一个卡片定 义文件的位置和一些设置(显示/隐藏速度,窗口大小)。 这个示例的目标是: 展示 Monkeybars 代码生成器的使用,它可以自动创建普通的文件 展示 Monkeybars 应用程序的基本结构 演示 Monkeybars MVC 组每个部分的创建 展示 Monkeybars 如何处理应用程序数据到 UI 组件的映射 展示如何将应用程序打包为可执行的 JAR 文件 使用 Monkeybars 应用程序生成器脚本 安装后,Monkeybars 提供一个命令行脚 本,用于创建一组初始的应用程序文件。要开始一个新的 Monkeybars 项目,可以执行随 gem 安装的 monkeybars 脚本。将项目命名为 monkey_see: $ monkeybars monkey_see 这样会在 给定的路径下(或者,如果只提供应用程序的名称,则在当前目录下)创建一个新的目录,并添加用于新 应用程序的核心文件和目录。 使用 rawr 将代码自举到 Java 环境中 rawr 是源于 Monkeybars 的另一个 Ruby 库。它处理各种打包任务,并提供一个命令行脚本,用于创建一个基本的 Java 类,Monkeybars 应用程序可以使用这个 Java 类来作为 Java 程序执行(而不是通过 JRuby 使应 用程序作为一个 Ruby 程序运行)。 对于这个 Monkeybars 应用程序,为了使用 rawr,可进入项 目目录,并执行 rawr 脚本: $ cd money_see; rawr install 使用 Monkeybars rake 任务生成文件 您已经看到了 Monkeybars 如何划分模型、视图和控制器。惯例是将这些文件放在 相同的目录中。Monkeybars 提供了一个 rake 任务,用于生成这些文件。您可以创建其中任何一个文件 或全部 3 个文件(后者更常见): $ rake generate ALL=src/flash 该命令在 src/ 下创建一个名为 flash 的子目录,其中有 3 个文件:flash_controller.rb、flash_view |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |