使用JRuby和Swing进行跨平台开发 - 编程入门网
.rb 和 flash_model.rb。前两个文件有从基本 Monkeybars 类继承而来的骨架类。模型代码则不是这样; Monkeybars 并不假定您如何管理应用程序逻辑和数据;那完全由您决定。
使用JRuby和Swing进行跨平台开发(7)时间:2011-11-29 IBM developerworks James Britt创建 UI 对于应 用程序的界面,需要一个 Swing 类,以显示 flash-card 数据。如何创建这个 Swing 类由您决定。 Monkeybars 中没有任何东西使它与任何特定的 UI 工具或 Swing 代码生成器绑定。按照惯例,Swing 文 件与它的相关元组放在同一个目录中(src/flash/FlashFrame.java)。您需要知道类包,以便将它传给 视图类(使用 flash 包,并将类命名为 FlashFrame)。 您的屏幕布局看上去应该如图 1 所示: 图 1. 应用程序的屏幕布局 一些关键点:应该 使用一个 JTextPane 来显示 flash-card 的内容,以便使用 HTML 来格式化所呈现的文本。另外,对于 文本面板和按钮,还应该使用容易理解的名称。这样一来,在处理视图时,就更容易知道一些关于 UI 组 件的信息。这个程序的代码是用 Ruby 编写的,所以应使用 Ruby 命名惯例:将文本命名为 pane card_pane,将两个菜单项命名为 edit_menu_item 和 quit_menu_item。另外再为它们提供快捷键。 帧本身的名称并不重要。视图类可以直接按名称引用组件。 定义模型 模型管理指 定 UI 背后的应用程序逻辑和数据。一个 Monkeybars 程序通常对于每个 Java 窗体有一个模型。示例应 用程序只有一个模型,用于处理 flash-card 数据。模型代码需要能够从一个已知的位置装载数据,并提 供一个公共方法用于提供那些数据。 为简单起见,将数据存储在应用程序运行时所在子目录下的 一个文本文件中。这里不要硬编码 HTML,而是使用 Textile 标记,并使用 RedCloth Ruby 库来转换它 。每个卡片条目由一个分隔字符串分隔开。 使用JRuby和Swing进行跨平台开发(8)时间:2011-11-29 IBM developerworks James Britt使用第三方的库 Textile 是一个文本标记格式 ,用于使用简单的纯文本惯例定义 HTML。例如,为了表示 <em>italicized</em>,可以编 写 _italicized_。RedCloth 是一个以 gem 的形式提供的 Ruby 库,它可以将 Textile 格式的文本转换 成 HTML。 Rubygems 使得安装和使用第三方的库变得非常容易,但是,由于您想将代码打包到一 个 JAR 中,并且还可能发布它,所以需要确保与应用程序相关的所有代码都被打包。为此,解压 RedCloth gem,并将 redcloth.rb 文件复制到项目的 ruby/lib/ 目录中: $ cd /tmp; gem unpack RedCloth 这将创建 /tmp/RedCloth-3.0.4 /(除非安装了不同版本的 gem)。将 /tmp/RedCloth-3.0.4/lib/redcloth.rb 复制到 monkey_see 项目的 lib/ruby/ 目录。 通常,不属于应用程序核心部分的任何 Ruby 库都应该放在 lib/ruby/ 中(这是惯例)。如果使用 gem,那么需要解压实际的库文件,并将它们添加到项目中。在本文的后面,您将看到怎样告诉程序如何发现这些文件。 关键模型方法 load_cards 方法从磁盘读取文本文件,划分出每个卡片,并将结果赋给 @cards 实例变量。 select_card 方法随机选取一张卡片,并将它赋给 @current_card 实例变量。您将使用 attr_accessor 来定义用于读取和设置这个变量的方法。 无论 UI 中显示哪张卡片,都可以在那里编辑它。经过编辑之后,update_current_card 方法获取 @current_card 的内容,并重新将它插入到 @cards 数组中。save 方法将 @cards 数组写回到磁盘。 current_card 方法的值就是要呈现的值,为了呈现这个值,需要一个视图类。 定义视图类 Monkeybars 视图类是 Java Swing 类的所有者。如果打开 flash_view.rb,可以看到,它调 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |