jruby:使用 JRuby 和 Swing 进行跨平台开发

  本文举例源代码或素材下载

  使用 Ruby 除了可以构建 Web 和控制台应用还可以编写复杂 GUI 桌面应用这些桌面应用可以不作修改地在多种平台上运行得益于 JRubyRuby 传统 C 实现健壮替代品Ruby GUI 工具包可以使用用于 Java 平台 UI 工具本文介绍个用 JRuby 和 Swing 构建应用库 Monkeybars并讲解个举例应用  Ruby 目前被作为种用于构建 Web 应用编程语言而著称主要通过 Ruby _disibledevent="使用 JRuby 和 Swing 进行跨平台开发" />

  些关键点:应该使用个 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 库来转换它每个卡片条目由个分隔串分隔开

  使用第 3方

  Textile 是个文本标记格式用于使用简单纯文本惯例定义 HTML例如为了表示 <em>italicized</em>可以编写 _italicized_RedCloth 是个以 gem 形式提供 Ruby 库它可以将 Textile 格式文本转换成 HTML

  Rubygems 使得安装和使用第 3方库变得非常容易但是由于您想将代码打包到个 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可以看到个类思路方法 _java_这应该被设置成为这个视图定义 Swing 类在您代码中这是 flash.FlashFrame

Tags:  swing开发 跨平台开发 jrubygroovy jruby

延伸阅读

最新评论

发表评论