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

使用J2ME的MVC2开源框架KBOX相关推荐

  1. J2ME的MVC2开源框架KBOX系列之二——参数传递与Action跳转

    KBOX的1.02正式版已经发布了,下载地址: https://sourceforge.net/project/showfiles.php?group_id=222328 KBOX网站:http:// ...

  2. 各种SmartPhone上的跨平台开源框架的总结

    目前SmartPhone的开发语言 Apple iPhone Objective-C C/C++ Google Android JAVA 可以使用NDK进行C/C++的开发 Windows Phone ...

  3. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...

  4. tomcat中request对象是被创建的_常用开源框架中设计模式使用分析(全)

    一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很 ...

  5. 分布式计算开源框架Hadoop入门实践

    在SIP项目设计的过程中,对于它庞大的日志在开始时就考虑使用任务分解的多线程处理模式来分析统计,在我从前写的文章<Tiger Concurrent Practice --日志分析并行分解设计与实 ...

  6. python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

    很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...

  7. 发布开源框架到CocoaPods入坑指南

    个人原文博客地址: 发布开源框架到CocoaPods入坑指南 在开发过程中一定会用到一些第三方框架, 只要安装了CocoaPods, 然后通过pod install命令, 就可以集成框架到项目中了 可 ...

  8. Android_开源框架_Volley实例

    2019独角兽企业重金招聘Python工程师标准>>> 1.自定义相关类 在 Android_开源框架_Volley(Google IO 2013)源代码及内部实现过程分析一文中,简 ...

  9. 百度飞桨全新升级:重磅推出PaddleHelix平台、开源框架V2.0RC,硬件生态路线图全公开...

    12月20日,WAVE SUMMIT+2020深度学习开发者峰会在北京举办.本届峰会,百度飞桨带来八大全新发布与升级,有支持前沿技术探索和应用的生物计算平台PaddleHelix螺旋桨,开发更加便捷的 ...

最新文章

  1. 编码练习——Java-数组-API-练习
  2. Boost.Python Tutorial
  3. 基本概念—回归、分类、聚类
  4. Linux下Redis的安装和部署
  5. golang | 变量-字符串练习
  6. java中整形_java中怎样实现60多位整形数字的运算
  7. 473.火柴拼正方形
  8. 【第14章】恶意代码防范技术原理@信息安全工程师 软考笔记
  9. 蜂群 matlab,人工蜂群算法
  10. 使用程序自动调用ANSYS并运行命令流文件
  11. 帮我写一个无数爱心滑落的html
  12. 租的服务器怎么做系统,租了服务器怎么用
  13. android pcm 音量_Android中实时获取音量分贝值详解
  14. 分析师:百度到2030年可能成为中国市值最高的公司
  15. CC3200使用MQTT协议连接Onenet平台实践
  16. Linux CentOS删除或重命名文件夹和文件的办法
  17. 软件测试如何快速上手,了解KYM? 阿里总监是这样说的
  18. 2022 年前端技术发展趋势知识小结
  19. n个数输出最大值和最小值
  20. 麦积机器人_天水市一中麦积校区师生在“青少年机器人竞赛”活动中再创佳绩...

热门文章

  1. k8s API限流——server级别整体限流和客户端限流
  2. 软件测试界面测试是什么,什么是软件测试的界面测试?
  3. 会议室919、920、1897
  4. xp网线连接正常 找不到服务器,WinXP网络连接正常无法上网怎么解决?
  5. python实现淘宝自动回复_python实现代码审查自动回复消息
  6. 苹果将发布新iPhone 邀请函引中国产业链躁动
  7. 贴吧用户id爬取查询小工具
  8. 【朝夕教育】2023年04月 WPF运动控制平台-002.运动控制平台知识点学习
  9. 游戏联运SDK是什么意思?
  10. HTML+CSS+JS+Jquery面试题