`

知识积累-KBOX2

    博客分类:
  • j2me
阅读更多

使用J2ME的MVC2开源框架KBOX

http://www.sina.com.cn   2009年08月05日 16:50   IT168.com
 
转载http://tech.sina.com.cn/s/2009-08-05/16501014584.shtml
配置文件:kbox,cfg.property
               res.property
               .PARAMETERS.  用于匹配commandAction触发事件处理
               .ACTION 用于匹配keyPressedAction触发事件处理
 

文本Tag: J2ME

  【IT168 技术】 kbox 是一个MVC2模型的J2ME开源框架,用于快速开发可扩展的J2ME MIDP应用程序。

  其结构如图:

 

使用J2ME的MVC2开源框架KBOX
 

 

   所有的可视组件都位于需要经由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。

 

源代码见附件

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    KBox C-101 BIOS

    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虚拟视频 v6.1.0.0 官方版.zip

    KBOX(原虚拟视频)一款集音乐播放、练唱、虚拟视频等功能于一体的K歌软件,歌曲想听就听,想练就练,视频要多炫有多炫,KBOX(原虚拟视频)满足你多个要求。 KBOX特点: 1、K歌练唱 歌曲评分 练唱更加有章法 ...

    KBOX-开源

    【KBOX开源】是一个基于MVC(Model-View-Controller)model2架构的框架,它致力于为开发者提供一个高效、可扩展的开发平台。MVC模式是一种广泛应用的软件设计模式,将应用程序的数据模型、用户界面和业务逻辑分离,...

    新浪show、腾讯qq、9158怎么关联KBOX?.docx

    2. **9158多人视频社区关联KBOX**: - 右键点击电脑右下角任务栏中的9158多人视频社区图标,选择“视频设置”选项。 - 在视频设备设置页面,找到“选择摄像头”功能,从列表中选择“KBOX”(可能是9158capture或...

    kbox怎么录歌.docx

    2. **已通过审核的歌曲位置**:一旦你的歌曲成功上传并通过审核,通常可以在个人主页或KBOX的“我的作品”部分找到并收听。 通过以上步骤,你可以在KBOX上录制并保存属于自己的音乐作品。别忘了,良好的录音环境和...

    Kbox javascript演示「Kbox javascript demo」-crx插件

    在kbox上显示定制的javascript。 如果您有兴趣:*以较小或较大的方式修改kbox的外观*添加新功能/删除现有功能*根据登录的用户进行修改(伪权限)*从后端数据库中的任何位置添加数据kbox然后,您可能会对使用...

    Kbox javascript demo-crx插件

    如果您感兴趣: *以小或大的方式修改kbox的外观和感觉 *添加新功能/删除现有功能 *根据记录谁修改(伪权限) *在kbox中的任何位置添加来自后端数据库的数据 然后,您可能有兴趣使用JavaScript执行此操作。...

    kx效果 kbox

    【标题】"kx效果与kbox:打造自动跟唱体验" 在音乐制作和卡拉OK领域,"kx效果"和"kbox"是两个重要的概念,它们为用户提供了一种独特的自动跟唱体验。"kx效果"通常指的是KX驱动器(KX Mixer)上的音频处理效果,而...

    kbox虚拟视频怎么用.docx

    2. **更换背景** - **X光叠加**:适用于视频跳舞或需要更换背景的场景。用户需确保背景为纯色(如白色),打开摄像头并选择背景图片。在设置中去除实际背景色,调整透明度和对比度,以实现理想效果。 - **画中画**...

    kbox-开源

    KDE窗口管理器kwin的客户端插件,允许在KDE内部原生使用黑盒,openbox和fluxbox主题。

    机顶盒说明书

    2. **多样的网络接入方式**:支持PPPoE、DHCP、静态IP三种接入方式,满足不同网络环境的需求。 3. **远程管理能力**:具备强大的网管功能,包括终端控制、远程控制,以及对HTML、JavaScript的支持,实现远程配置与...

    K1000-Silent-Installation-Tips

    ##### 2. 其他信息来源 除了官方文档和技术论坛外,还可以寻找由社区开发的工具和脚本来辅助静默安装过程。这些资源通常包含了特定应用程序的最佳实践和已知问题的解决方案。 #### 案例研究参考集 本文档提供了几...

    高清卡口监控采用嵌入式工控机仍是主流.doc

    2. KBOX-2214:多串口防尘防湿工业嵌入式电脑控制器,具备全密封设计,Intel Atom 1.83GHz处理器,2GB DDR3内存,6个串口,千兆以太网接口,4个USB 2.0接口,12V安全工作电压,可选WIFI、3G和GPIO功能。 3. KBOX-...

    WebcamMax(虚拟视频软件) v8.0.7.8.zip

    WebcamMax是一款专业的虚拟视频软件。软件支持ICQ, AIM, MSN, Camfrog, Skype, Paltalk, Yahoo Messenger等网络视频软件,具备视频录制、虚拟摄像头、分享视频、涂鸦、画中画等多种功能,支持超过1,000种效果,包括...

    中联科AVL1118A 刷机工具+联机方案,此方案是中连科正规写片方案,附操作文档100%可行

    在IT行业中,刷机是一种常见的操作,特别是在嵌入式设备和智能硬件领域,例如数字电视接收器、机顶盒或特定的开发板等。这里提到的"中联科AVL1118A 刷机工具+联机方案"是一个针对特定型号芯片——AVL1118A的升级过程...

    Kobo XCSoar Launcher:Kobo Mini的可自定义启动菜单-开源

    该项目的主要目的是简化Kobo Mini上XCSoar的启动和使用(请参阅xcsoar.org)。 但是,使用范围不应仅限于XCSoar。 Launcher的代码大小应该很小,可以重用大多数原始库,并为可能移植到Kobo Mini的任何应用程序提供...

    kbox:kickbox.io 电子邮件验证 API 的 Laravel 实现

    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 ...

    补丁及漏洞管理细则

    ### 补丁及漏洞管理细则知识点详解 #### 一、目的 本细则旨在规范补丁管理流程,通过有效的管理和更新,减少系统中存在的安全漏洞,从而防止计算机受到利用这些漏洞的各种恶意攻击,确保计算机系统的安全性和稳定性...

    用chcekbox实现多条记录同时删除

    <td><input type="checkbox" id="2" name="2" onclick="CheckBoxOnClick(this, '2', 'name2')"> <td>2 <td>name2 <!-- 更多数据行... --> ()"> ``` #### 三、JavaScript逻辑处理 为了实现全选和多选的...

Global site tag (gtag.js) - Google Analytics