j2me框架教程(1)

网上针对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

 

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

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

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值