快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
看到控制器端的情况。在视图中,您需要使用 define_signal 方法定义信号处理程序。它带有 2 个参数,一个是信号名称,另一个是用于处理那个信号的视图方法:

define_signal :name => :initialize,              :handler => :do_roll_up

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

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

处理程序方法必须带 2 个参数:一个是模型(从控制器传入),另一个是传输对象。传输对象是一个短暂的 hash,用于在控制器与视图之间来回移动数据。视图中有为 UI 的初始位置、幻灯片出现、幻灯片消失定义的信号,还有 2 个分别为开始和结束卡片编辑而定义的信号。每种信号的处理程序都很短。下面是 do_roll_up method:

def do_roll_up model, transfer    hide    move_to_top_right    roll_up  end

编辑序列是通过菜单事件触发的。Edit 菜单项控制编辑。在视图中,编辑序列意味着设置

card_pane.editable = true,然后用原始的 Textile 卡片文本换出用 HTML 呈现的内容。另外还需要更

改组件的内容类型,以便它正确地呈现纯文本。

当编辑完成时,则执行相反的过程。面板呈现 HTML,而 editable 则被设置为 false。视图只负责管理

Swing 组件的状态;控制器则指示模型执行文本更新和保存。

定义控制器类

嵌套的控制器

Monkeybars 控制器通常是作为单独的类使用的;通常不需要多个实例。但是,有一个例外值得注意,那就是嵌套控制器的使用,在此情况下,一个帧或面板有多个子组件,它们是同一个类的不同实例,这超出了本文的讨论范围。实际上,您可以将一组复杂的帧、面板和组件划分到不同的 MVC 元组中。一个例子就是地址簿,一个顶级 Swing 帧呈现多个地址对象,而每个地址对象又是一个 address_entry MVC 集合的实例。

您的 Swing 对象有一些菜单项,但是不必将任何用于这些菜单项的代码放到视图类中。那些代码属于控制器。控制器处理所有 UI 事件,例如单击按钮、选择菜单以及更改文本字段。Monkeybars 为此作了安排,在默认情况下,来自 Swing 代码的所有事件都被毫无察觉地处理。对于您关心的那些事件,必须定义事件处理程序。在这个示例应用程序中,需要捕捉的事件是单击菜单。

事件处理程序的形式如下:

def your_component_name_action_performed      # code    end

(如果想在代码中使用实际的 Swing 事件,也可以在定义处理程序时以实际的 Swing 事件作为参数。)

要处理 Quit 菜单项,只需退出:

def quit_menu_item_action_performed    java.lang.System.exit(0)  end

Edit 菜单动作则复杂一点:

def edit_menu_item_action_performed    if @editing      @editing = false      signal :end_edit      update_card     else      @editing = true      signal :begin_edit      update_model view_model, :current_card    end  end

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

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

以上代码通过使用信号驱动视图来处理编辑模式的开关。要注意的关键一点是,卡片文本是如何通过使用

控制器的模型实例(通过信号暗中传递给视图)和 view_model 方法提供的视图的模型副本进行转移的。

每当控制器需要用户界面的当前状态时,它可以使用 view_state 方法来引用视图的模型副本和当前的传

输对象。由于从 view_state 获取模型副本非常常见,所以 Monkeybars 提供了 view_model 方法。

您的控制器还有一个用于实现初始呈现的方法和一个用于显示/隐藏显示序列的方法。这两个方法都使用

信号将实际的显示代码交给视图处理。

编排应用程序

除了一个或多个 MVC 元组外,Monkeybars 应用程序还使用 2 个关键的助手

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