`
hzxdark
  • 浏览: 77500 次
社区版块
存档分类
最新评论

使用J2ME的MVC2开源框架KBOX

阅读更多
kbox 是一个MVC2模型的J2ME开源框架,用于快速开发可扩展的J2ME MIDP应用程序。
主页:http://kbox-mvc.sourceforge.net/

其结构如图:




所有的可视组件都位于需要经由MIDlet来显示,而MIDlet上的所有事件,包括键盘事件,按钮事件提交到ActionController上, ActionController跟据配置文件,将事件转发给相应的Action,Action将处理结果得到的可视组件(Displayable)通过 ActionForward返回MIDlet显示。

KBOX的使用非常简单, 以一个HELLO WORLD 为例:
创建一个MIDLET:

public class TestMIDlet extends MIDlet{



         protected void startApp() throws MIDletStateChangeException {

                 ActionController controller = ActionController.getInstance(true);

                 controller.registerViewer(this);       //Register the MIDlet



                 MyKGameCanvas mgc = new MyKGameCanvas("MYGC");  //Create a GameCanvas



                 KCommand kc = new KCommand("TEST BUTTON", Command.HELP,1,"MYCMD",null);
                 mgc.addCommand(kc);
                 mgc.setCommandListener(controller);
                 Display.getDisplay(this).setCurrent(mgc);

         }



}

创建一个Canvas:

public class MyKGameCanvas extends KGameCanvas{



         public MyKGameCanvas(String uniqueID) {

                   super(uniqueID);

         }

         public void showString(String string){

                   Graphics g = this.getGraphics();

                   g.setColor(0xFFFFFFFF);

                   g.fillRect(0, 0, this.getWidth(), this.getHeight());

                   g.setColor(0xFF000000);

                   g.drawString(string, 0, 0, Graphics.TOP|Graphics.LEFT);

                   this.flushGraphics();

         }

}

创建相应的Action:

public class TestAction implements Action{

         public void excute(KCommand cmd, Item item,  Displayable dis, ActionForward forward,Hashtable parameters) {

              

                   MyKGameCanvas mkc = ((MyKGameCanvas)dis);

                   mkc.showString("hello world! From "+mkc.getUniqueID()+"."+cmd.getUniqueID());

         }

}

将按钮事件注册给Action:

DEBUG=true        //open the debug model of KBOX

CMD.MYCMD.ACTION=action.TestAction

注意这里的MyKGameCanvas 继承的KGameCanvas,而不是GameCanvas。KBOX的KGameCanvas类继承自GameCanvas,当并没有使用 GameCanvas那种使用线程监听状态的模型,而是重写了keypressed等方法来处理键盘事件。另外,KGameCanvas的重写的按钮事件的处理已经实现了重复按键情况,而且可以指定重复按键的灵敏度,这点是非常好用的:)

KCommand是KBOX扩展的按钮组件。
KCommand kc = new KCommand("TEST BUTTON", Command.HELP,1,"MYCMD",null);
第一个参数是按钮的名字,第二参数是按钮类型,第三个参数是优先级,第四个参数是ID名,用于配置文件的映射,对应“ CMD.MYCMD.ACTION=action.TestAction”中的MYCMD,第五个参数是可传递参数,是一个Hashtable类型,用于向Action传递参数(当然你喜欢的话,也可以将参数提到配置文件里去……)。

KBOX的Action是一个只有execute方法的接口,任何类只要实现了该接口,都可以是一个Action。




注册一个键盘事件一样很简单:

public class TestKeyAction implements Action{

         public void excute(KCommand cmd, Item item,  Displayable dis, ActionForward forward,Hashtable parameters) {

                   MyKGameCanvas mkc = ((MyKGameCanvas)dis);

                   …

                   Do your business here.

                   ..

         }

}

指定键盘事件的处理Action

DEBUG=true        //open the debug model of KBOX

CMD.MYCMD.ACTION=action.TestAction

KEY.MYGC.FIRE.ACTION=action.TestKeyAction…




KBOX的另外一个很实用的特性是DEBUG MODEL。
这个功能是用于在真机测试时,调试BUG用的。由于真机与模拟器不一定相同,当真机上抛出异常(真机上的异常无法察觉,没有控制台啊!),而模拟器又一切正常的时候,这个功能就有用了:KBOX将捕获到的异常的用一个ERROR PAGE显示出来。不过注意在发布JAR包时,记得要去掉这个DEBUG模式,否则没事按到个没定义的键盘按键都会捕获到未定义按键处理的异常……
要打开DEBUG模式需要在配置文件上指定DEBUG=true。

最新下载地址:https://sourceforge.net/project/showfiles.php?group_id=222328

如果觉得本文写得还不错,麻烦请点一下右上角的“顶”字顶一下
10
2
分享到:
评论

相关推荐

    j2me实现mvc的框架源码

    10. **社区支持与维护**: 开源框架通常有社区支持,开发者可以通过论坛、邮件列表或GitHub等平台寻求帮助,解决问题,或者参与到框架的改进中。 总结来说,"j2me实现mvc的框架源码"涉及到的核心知识点是J2ME平台、...

    j2me 手机游戏 通用框架(非常强大).rar

    《J2ME手机游戏通用框架详解》 J2ME(Java 2 Micro Edition)是Java平台的一个重要分支,主要用于移动设备、嵌入式设备和消费类电子产品的开发。在早期智能手机时代,J2ME作为手机游戏开发的重要工具,拥有广泛的...

    j2me开源框架Kuix源码

    在J2ME的世界里,框架的选择对于简化开发、提高效率至关重要,而Kuix就是这样一款优秀的开源框架。 Kuix框架,源自国外,专为J2ME应用设计,其目标是提供一套强大且易用的工具集,帮助开发者快速构建功能丰富的移动...

    j2me开发框架介绍

    随着 j2me 的普及,出现了许多开源框架,旨在简化开发过程,提高开发效率。下面将介绍这些框架,並分析它们的特点和功能。 1. EasyMF 简易 J2ME 开发框架 EasyMF 是一个 J2ME 开发框架,目标是设计一个简单、稳定...

    j2me基础知识及框架

    j2me 基础框架 及基础知识可以帮助入门

    j2me框架_用J2ME的通用联网框架开发联网.pdf

    J2ME(Java 2 Micro Edition)是一种针对小型设备和嵌入式系统的Java平台,主要用于开发移动设备上的应用程序。在J2ME中,联网功能对于创建能够与服务器进行交互的应用程序至关重要。本文将详细介绍如何使用J2ME的...

    J2ME的MVC模式+J4ME使用Demo

    `TestMVC2ME`可能是这个压缩包中的示例项目,它展示了如何在J2ME中使用MVC模式以及J4ME框架。这个项目可能包含一个简单的MVC实现,比如一个简单的数据管理模型,一个显示数据的视图,以及一个处理用户交互的控制器。...

    基于MVC模式的J2ME应用程序框架设计

    【基于MVC模式的J2ME应用程序框架设计】 在当前的移动开发领域,J2ME(Java 2 Micro Edition)虽然已经被更先进的平台如Android和iOS所替代,但在早期的移动设备开发中,J2ME占据着重要的地位。随着硬件性能的提升...

    j2me2D游戏框架

    "j2me2D游戏框架"是专门为J2ME平台设计的一套工具集,帮助开发者更高效地构建2D游戏。 在J2ME中,2D游戏框架通常包括以下几个关键组成部分: 1. **图形渲染**:这是框架的基础,用于在设备屏幕上绘制和更新2D图形...

    J2me连接WebServices框架 - kSOAP2源码

    3. **kSOAP2 框架**:kSOAP2 是一个开源的 J2ME 库,支持 SOAP 1.1 和 1.2 协议。它允许开发者在 J2ME 应用中创建和消费 Web Services,提供了一种简单的方式来序列化和反序列化 SOAP 消息。 4. **源码分析**:通过...

    J2ME GZIP压缩开源包

    在平时的开发中,我们会碰到数据量过大的问题,为了解决这个问题,我们可以用GZIP处理方式,J2ME本身没有提供GZIP压缩,但可以利用一些开源包。 上面此句用于解压GZIP,至是否要转换成DataInputStream还是...

    NIIT MVC4 MT2 J2ME试题与答案

    【标题】"NIIT MVC4 MT2 J2ME试题与答案"揭示了这是一份针对NIIT培训课程...通过这份"NIIT MVC4 MT2 J2ME试题与答案",学习者可以全面地复习和巩固以上知识点,从而提升其在J2ME平台上使用MVC4框架开发应用程序的能力。

    j2me-mvc 模式思想

    ### j2me-MVC 模式思想 ...对于使用J2ME/MIDP平台的商务开发者来说,理解并适当应用MVC模式是非常有益的。无论是在简单的应用开发还是复杂的商业应用中,MVC模式都能够帮助开发者构建出更加健壮和灵活的系统。

    在eclipse中怎样使用j2me

    在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me

    fallME 一个J2ME的开发框架

    fallME是一个由Sun公司开发的Java 2 Micro Edition(J2ME)框架,旨在简化和加速移动应用的开发过程。在J2ME这个平台上,fallME提供了一系列的功能和工具,帮助开发者更高效地创建、测试和部署面向小型设备的应用...

    j2me手机程序mvc模型设计

    2. **性能开销**:虽然J2ME版本的MVC相对轻量级,但在某些资源受限的设备上仍可能存在一定的性能开销。 3. **学习曲线**:对于新手开发者而言,理解并正确实现MVC模型可能需要一段时间的学习。 #### 四、MVC模型...

    基于J2ME的手机游戏框架设计与优化.pdf

    在探讨《基于J2ME的手机游戏框架设计与优化》这一主题时,我们需聚焦于J2ME(Java 2 Platform, Micro Edition)平台下的手机游戏开发技术,及其框架设计与性能优化策略。J2ME作为移动设备上Java应用的标准,为手机...

    jxa1.2—jabber开源框架

    JXA1.2是针对移动设备,特别是基于Java 2 Micro Edition (J2ME) 平台的 jabber 开源框架。Jabber 是一个开放标准的即时通讯协议,它允许用户进行实时通信,包括文字聊天、语音通话、视频聊天等。Jabber 协议基于 XML...

Global site tag (gtag.js) - Google Analytics