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实现mvc的框架源码j2me实现mvc的框架源码j2me实现mvc的框架源码j2me实现mvc的框架源码
j2me 手机游戏 通用框架(非常强大).rar
j2me框架_用J2ME的通用联网框架开发联网.pdf
介绍了目前J2ME的多个开源框架,并分析了这些框架
j2me 基础框架 及基础知识可以帮助入门
国外开源的j2me框架Kuix,功能很好,很强大
j2me2D游戏框架,实现游戏的2d的j2me软件源代码
在平时的开发中,我们会碰到数据量过大的问题,为了解决这个问题,我们可以用GZIP处理方式,J2ME本身没有提供GZIP压缩,但可以利用一些开源包。 上面此句用于解压GZIP,至是否要转换成DataInputStream还是...
基于MVC模式的J2ME应用程序框架设计
手机版的 j2me jabber开源框架,聊天工具 java
j2me 的一个框架工具 sun公司自己开发的
在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me
J2ME的MVC模式例子 + javame的手机端UI框架j4me的使用演示代码
基于J2ME的手机游戏框架设计与优化.pdf
本文简要介绍了MVC模式思想并分析了MVC模式利弊最后结合MIDP平台给出几种常见MVC模式实战相信此文 对任何个使用midp平台商务开发者都或多或少有所帮助
J2ME API J2ME API J2ME API J2ME API J2ME API
j2me手机程序mvc模型设计,让你清楚知道mvc在j2me程序中怎么运用的
NIIT MVC4 MT2 J2ME试题与答案 NIIT MVC4 MT2 J2ME试题与答案
该游戏采用了J2ME的游戏框架,使用了J2ME的游戏引擎,实现了游戏的基本功能,包括游戏场景的切换、游戏角色的控制、游戏物品的收集、游戏敌人的攻击等。 游戏设计了5个游戏场景,分别是森林场景、海洋场景、城堡场景、...