j2me框架教程(1)

本文详细介绍了一种用于J2ME开发的框架,包括如何创建功能模块及将其整合到主应用的方法。通过模块化设计,提高了代码复用率,简化了后续项目的开发流程。

网上针对J2ME开发的框架很少,以前曾分析过ZKMOB,觉得这个框架不错,感兴趣的话,你可以到SOURCE FORGE上下载,ZKMOB工作原理是通过连接服务器,然后请求某个地址,等服务器返回XML格式的文件,再分析这个文件信息并显示其内容,这个XML格式的文件既是数据的载体,同时还能控制界面的显示,这个思路跟我接下来要介绍的一套J2ME框架很类似。

在实际开发中,我们可能在不同的项目中实现了很多的功能,比如浏览新闻功能,拍照功能,播放音频功能等等, 那么我们经后在开发其它项目的时候,有没有可能复用这些功能呢,大家都知道,面向对象编程一个优势就是复用,复用的好处很明显,它可以增加代码的利用率,减少你测试的时间,同时也可以增强软件的稳定性, JAVA语言给我们提供了这种可能。而将各个功能模块化,正是这套框架的特色。

接下来,介绍一下如何在该框架下编写一个功能模块,并将该模块加载到应用程序中。

我假设你有过J2ME的开发经验,而且对ECLIPSE比较了解,因为我都是用ECLIPSE开发,具体的设置细节就不讲了。我的开发环境是ECLIPSE 3.2WTK 2.2 JDK 1.5

下面介绍开发功能模块的具体步骤:

1 首先,新建一个J2ME工程,工程名为EXAMPLE

2 在主工程下新建两个源文件夹,一个src用来放代码,一个res用来放资源

3 导入开发包AppFrame.jar,这一步可能问题比较多,我以图片说明

       1)点击Example,右键,选择 构建路径-》配置构建路径-》库

       2) 添加变量

    

     如果变量没建过,可以在上面点“配置变量”

       3)新建一个变量

    

4) 点击文件夹,找到你放AppFrame.jar的目录,名称为THIRDLIB

5)回到第三步的界面,此时应有THIRDLIB这项,双击THIRDLIB,点变量,选择AppFrame.jar

 

       6 点击排序和导出,如果你的工程需要某些包的话,必须选上。千万不要J2ME library选上,因为真机上已经有这个包了

      

这样写,应该够详细了吧,如果工程报错,基本就是这里设置出了问题,再回来检查吧。

4 src下新建一个包,包名为com.example.test

5 在该包下新建一个类,Example ,这个类必须从Application继承,如下表:

(代码的具体含义,以后再解释)

package com.example.test;

 

import javax.microedition.lcdui.Image;

 

import com.frame.application.Application;

import com.frame.application.DisplayFactory;

import com.frame.util.ResUtil;

import com.frame.util.XmlUtil;

import com.frame.display.DisplayManager;

 

public class Example extends Application {

    public Example() {

       super();

    }

 

    public String getName() {

       return "j2me框架演示程序1";

    }

 

    public Image getAppIcon() {

       ResUtil.baseDir = "/example/";

       return ResUtil.getStaticImage("ex1.png");

    }

 

    public void doApplication() {

       XmlUtil.initXmlFile("/example/Index.xml");

       DisplayManager.getCurrent().setDisplay(

              DisplayFactory.getDisplayable("Index"));     

    }

 

    public void register() {   

    }

 

    public void initialize(boolean isFirst) {    

    }

 

    public void finalizeApp() {

    }

 

    public String getHelpString() {

       return "j2me框架演示程序 /n Author:feiya Date:2007-8-28";

    }

 

    public void doSearch() {

    }

 

    public boolean supportSearch() {

       return false;

    }

 

    public void doSysManager() {      

    }

 

    public boolean supportSysManager() {

       return false;

    }

 

    public boolean supportHelp() {

       return true;

    }

 

    public boolean supportParserXml() {

       return false;

    }

}

6 res下新建一个目录example,以后这个模块的资源就放在这个目录下

7 在目录example下,建一个XML文件,命名为index.xml

具体含义,以后再解释

<XmlFile>

       <Html Name="Index" AutoSave="1" AutoCache="">

              <Body>

                     <Item DisplayName="Type:Content" File="typeContent" Type="Task"/>

                     <Item Type="Hr"/>

                     <Item DisplayName="Type:Hr" File="typeHr" Type="Task"/>

                     <Item Type="Hr"/>

                     <Item DisplayName="Type:InputBox" File="typeInputBox" Type="Task"/>

                     <Item Type="Hr"/>

                     <Item DisplayName="返回" Type="Back"/>

              </Body>

       </Html>

       <Html Name="typeContent" AutoSave="0" AutoCache="1">

              <Body>

              <Item Type="Content" Align="left">左对齐</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" Align="center">居中对齐</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" Align="right">左对齐</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" Color="0000FF">字体颜色:蓝色</Item>       

                     <Item Type="Hr"/>

                     <Item Type="Content" UnSelectBgColor="00000F" >未选中时的背景色:</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" TopMargin="10">上边距:10</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" BottomMargin="10">下边距:10</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" LeftMargin="10">左边距:10</Item>

                     <Item Type="Hr"/>

                     <Item Type="Content" RightMargin="10">右边距:10</Item>              

                     <Item Type="Hr"/>

                     <Item DisplayName="返回" Type="Back"/>

              </Body>

       </Html>

</XmlFile>

7 在目录example下,建一个图片,命名为ex1.png

 

下面介绍如何建个主工程来包含以上的功能模块

1 新建个工程,工程名Application

2 在主工程下新建两个源文件夹,一个src用来放代码,一个res用来放资源

3 点击Application,右键,构建路径-》配置构建路径-》项目-》添加-Example

然后选择排序和导出,将Example这个复选框选上。这样的话,就将测试模块包含到这个主工程中。

4 导入开发包AppFrame.jar,同功能模块

5 src下新建一个包,包名为com.frame.soft

6 在该包下新建一个类,MainMidlet ,这个类必须从AppMIDlet继承,如下表:

具体含义,以后再解释

public class MainMidlet extends AppMIDlet {

    public MainMidlet() {

       super();     

       try {        

           Class c = Class.forName("com.example.test.Example");

           addApplication(10, c);     

       } catch (Exception ex) {

          

       }

    }

 

最后显示效果:

点击图标,程序就会分析该模块下资源包里的index.xml文件,然后显示

点击Type:Content

 

 

如果将以下代码注释掉:

//Class c = Class.forName("com.example.test.Example");

           //addApplication(10, c);

 

显示效果如下:

说明你刚才的功能模块已经被去掉了。

 

这样的话,你只要将你现有的功能给模块化,那么今后写程序,对于已经实现了的模块,只要添加到主工程里就行了,简单吧。

FAQ

1 导入的时候错误,出现红叉叉

我碰到过两种情况:

1)  没有为工程指定一个模拟器,就是没有引用MIDP

2)  配置构建路径出错

 

2 调试的时候,一闪而过

Window->Preferences->Java->Debug

 

去掉Suspend execution on uncaught exceptions的对勾

去掉Suspend execution on compilation errors的对勾

底部Debugger timeout (ms)的数值改成15000

Launch timeout (ms)的数值改成20000

 

以上只是简单的介绍,对于复杂的应用,我们接下来再讲。

图片显示不出来,上传文件也出错,晕了。

 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值