使用J2ME的MVC2开源框架KBOX
文本Tag: J2ME
【IT168 技术】 kbox 是一个MVC2模型的J2ME开源框架,用于快速开发可扩展的J2ME MIDP应用程序。
其结构如图:
所有的可视组件都位于需要经由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。
源代码见附件
相关推荐
Ver: ef801_bhl6_r112 By unpacking this ZIP-Archive to a mass storage device with FAT32 partition you can use the automatic update mechanism which is part of the UEFI shell. Content of the Archive: - ...
KBOX(原虚拟视频)一款集音乐播放、练唱、虚拟视频等功能于一体的K歌软件,歌曲想听就听,想练就练,视频要多炫有多炫,KBOX(原虚拟视频)满足你多个要求。 KBOX特点: 1、K歌练唱 歌曲评分 练唱更加有章法 ...
KBOX是MVC model2框架作品。 它可以帮助您根据已发布的标准和经过验证的设计模式为您的应用程序创建可扩展的开发环境。
在kbox上显示定制的javascript。 如果您有兴趣:*以较小或较大的方式修改kbox的外观*添加新功能/删除现有功能*根据登录的用户进行修改(伪权限)*从后端数据库中的任何位置添加数据kbox然后,您可能会对使用...
如果您感兴趣: *以小或大的方式修改kbox的外观和感觉 *添加新功能/删除现有功能 *根据记录谁修改(伪权限) *在kbox中的任何位置添加来自后端数据库的数据 然后,您可能有兴趣使用JavaScript执行此操作。...
kbox怎么录歌.docx
kx效果 kbox 可实现自动跟唱,kx效果 kbox 可实现自动跟唱
kbox虚拟视频怎么用.docx
KDE窗口管理器kwin的客户端插件,允许在KDE内部原生使用黑盒,openbox和fluxbox主题。
新浪show、腾讯qq、9158怎么关联KBOX?.docx
华为机顶盒说明书
转发一个中联科AVL1118A联机方案,此方案是中连科正规写片方案,附操作文档100%可行 偶已经刷机成功,
该项目的主要目的是简化Kobo Mini上XCSoar的启动和使用(请参阅xcsoar.org)。 但是,使用范围不应仅限于XCSoar。 Launcher的代码大小应该很小,可以重用大多数原始库,并为可能移植到Kobo Mini的任何应用程序提供...
Laravel 的 Kickbox ...根据 : Kickbox determines if an email address is not only valid, but associated with a actual user. Uses include: * Preventing users from creating accounts on your applications ...
版 本:V4.0正式版 更新时间:2010年02月26日 应用平台:Windows 2000/XP/2003 Vista 软件大小:12.50 M 系统配置:赛扬2G或更快,内存512M及以上
用chcekbox实现多条记录同时删除,全选和复选的功能等等
华为模拟器 华为模拟器 华为模拟器 华为模拟器 华为模拟器
3、强大的扩展性:支持多种系统扩展,比如扩展兼容一粒云KBox网盘模块,在物理隔离需要时可以扩展各个名牌厂家的网闸的设备产品,可以轻松地满足企业各种规模的数据存储需求,同时支持高可用性和容灾能力。