您的位置:首页 > 其它

j2me框架教程(1)

2007-08-29 16:14 211 查看
网上针对J2ME开发的框架很少,以前曾分析过ZKMOB,觉得这个框架不错,感兴趣的话,你可以到SOURCE FORGE上下载,ZKMOB工作原理是通过连接服务器,然后请求某个地址,等服务器返回XML格式的文件,再分析这个文件信息并显示其内容,这个XML格式的文件既是数据的载体,同时还能控制界面的显示,这个思路跟我接下来要介绍的一套J2ME框架很类似。
在实际开发中,我们可能在不同的项目中实现了很多的功能,比如浏览新闻功能,拍照功能,播放音频功能等等, 那么我们经后在开发其它项目的时候,有没有可能复用这些功能呢,大家都知道,面向对象编程一个优势就是复用,复用的好处很明显,它可以增加代码的利用率,减少你测试的时间,同时也可以增强软件的稳定性, JAVA语言给我们提供了这种可能。而将各个功能模块化,正是这套框架的特色。
接下来,介绍一下如何在该框架下编写一个功能模块,并将该模块加载到应用程序中。
我假设你有过J2ME的开发经验,而且对ECLIPSE比较了解,因为我都是用ECLIPSE开发,具体的设置细节就不讲了。我的开发环境是ECLIPSE 3.2,WTK 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

以上只是简单的介绍,对于复杂的应用,我们接下来再讲。
图片显示不出来,上传文件也出错,晕了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: