找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

在MIDlet套件中封装多个MIDlet

[复制链接]
admin 发表于 2012-9-4 17:33:48 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
在我们谈论如何封装多个 MIDlet之前,我们先得多写几个可用的MIDlet。下面有两个简单的 MIDlet。
第一个显示一个带有简短消息的文本框组件。

  MIDlet1.java源程序:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MIDlet1 extends MIDlet implements CommandListener
{
 private Display display; // 引用Display对象
 private TextBox tbxMain; // 显示消息的文本框
 private Command cmdExit; // 退出MIDlet的命令
 // 构造程序
 public MIDlet1()
 {
  display = Display.getDisplay(this);
  cmdExit = new Command("Exit", Command.SCREEN, 1);
  tbxMain = new TextBox("MIDlet 1", "Welcome", 50, 0);
  tbxMain.addCommand(cmdExit);
  tbxMain.setCommandListener(this);
 }
 // 启动MIDlet时由应用程序管理器调用
 public void startApp()
 {
  display.setCurrent(tbxMain);
 }
 // 一个必要的方法
 public void pauseApp()
 { }
 // 一个必要的方法
 public void destroyApp(boolean unconditional)
 { }
 file://检查一下是否选择Exit命令
 public void commandAction(Command c, Displayable s)
 {
  if (c == cmdExit)
  {
   destroyApp(false);
   notifyDestroyed();
  }
 }
}

  第二个MIDlet使用List组件显示消息(MIDlet2.java):
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MIDlet2 extends MIDlet implements CommandListener
{
 private Display display; file://引用Display对象
 private List lstMain;
 private Command cmdExit; // 退出 MIDlet的命令
 // 构造程序
 public MIDlet2()
 {
  display = Display.getDisplay(this);
  cmdExit = new Command("Exit", Command.SCREEN, 1);
  lstMain = new List("MIDlet 2", Choice.IMPLICIT);
  lstMain.append("Welcome Back", null);
  lstMain.addCommand(cmdExit);
  lstMain.setCommandListener(this);
 }
 file://启动MIDlet时由应用程序管理器调用
 public void startApp()
 {
  display.setCurrent(lstMain);
 }
 file://一个必要的方法
 public void pauseApp()
 { }
 file://一个必要的方法
 public void destroyApp(boolean unconditional)
 { }
 file://检查一下是否选择Exit命令
 public void commandAction(Command c, Displayable s)
 {
  if (c == cmdExit)
  {
   destroyApp(false);
   notifyDestroyed();
  }
 }
}


  第一个程序名为 MIDlet1.java,第二个程序名为 MIDlet2.java。在你保存这些文件的目录里,运
行下列命令编译并预验证这些文件。
javac -bootclasspath c:mefcs*.java
preverify -classpath c:mefcs;. -d . MIDlet1 MIDlet2
jar cvfm MIDlets.jar manifest.txt MIDlet1.class MIDlet2.class spin.png

  创建 JAR文件
创建一个新文件,取名为 manifest.txt,然后输入如下内容:
MIDlet-Name: MIDlet Examples
MIDlet-Version: 1.0
MIDlet-Vendor: My Corporation Inc.
MIDlet-1: MIDlet1, /spin.png, MIDlet1
MIDlet-2: MIDlet2, /spin.png, MIDlet2
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0

  运行下列命令创建一个 JAR文件:

  
jar cvfm MIDlets.jar manifest.txt MIDlet1.class MIDlet2.class spin.png

  这将创建一个名为 MIDlets.jar的 JAR文件,包括 manifest.txt文件和上面两个类文件。

  注意: JAR中的清单文件名应是 manifest.mf。

  创建 JAD文件

  创建一个新文件,取名 MIDlets.jad:
MIDlet-Name: MIDlet Examples
MIDlet-Version: 1.0
MIDlet-Vendor: My Corporation Inc.
MIDlet-Description: Two simple examples to show how to compile and run a MIDlet
MIDlet-Jar-URL: MIDlets.jar (179 Bytes, 下载次数: 0)
MIDlet-Jar-Size: 2604
MIDlet-1: MIDlet1, /spin.png, MIDlet1
MIDlet-2: MIDlet2, /spin.png, MIDlet2

  注意这两个 MIDlet的引用:
MIDlet-1: MIDlet1, /spin.png, MIDlet1

MIDlet-2: MIDlet2, /spin.png, MIDlet2

  上面每一行都包括在设备上显示的 MIDlet名 ( MIDlet1和 MIDlet2 );在每个MIDlet名旁边,应用
程序管理器都会显示一个图象文件;以及启动 MIDlet的类文件。

  运行 MIDlet

  你既可以从一个局域网文件系统也可以从一个 Web服务器中运行MIDlet,现在我将分别介绍一下。

  从文件系统运行

  键入下列命令来预览MIDlet:
midp -transient file://MIDlets.jad

   -transient选项告诉模拟器,你想运行一个指定 url中可找到的描述文件。在本例中,
file://MIDlets.jad,这当前目录查找 MIDlets.jad。如果有必要的话,你还可以给出一个 JAD文件的
完整的路径。比如说,我的 JAD文件的完整路径是
file://J2ME/MIDlets/welcome.jad
  从 Web服务器上运行

  你还可以从一个 Web服务器上运行 MIDlet,在上载 JAR和 JAD文件之后,通过改变 url访问 JAD文
件:
midp -transient MIDlets.jad (179 Bytes, 下载次数: 0)

  这将访问运行在我的电脑上的Web服务器上的 MIDlets.jad文件,如果你把文件上传到互联网上的
Web服务器,只需简直改变适当域名:
midp -transient http://www.yourwebserver.com/path/MIDlets.jad

  使用 Java程序包的项目管理

  按照下列步骤创建最后一个MIDlet:

  1. 创建用于新项目的目录,我使用的名称为 MIDletPackage,是c:me的子目录。

  2. 在新建目录内,创建三个新的子目录: jclasses、 pclasses、 resources

  有了这些附加的目录,能够很容易找到特定的文件。例如,所有的图象文件和其他资源都放入
/resources子目录;所有的由 Java编译程序创建的类文件都置于 /jclasses子目录;经过预验证的类置
于/pclasses子目录中。下面是我的系统中的目录结构:
c:j2me
|
MIDletPackage => Java 源代码和manifest.txt文件
|
jclasses => 从Java编译器编译的类
pclasses =>经过预验证的类
resources =>资源文件 (图像文件等)

   3. 更新文件:复制 Java源文件( MIDLet1.java和 MIDlet2.java)到 MIDletPackage目录,并在每
个文件头部添加 package语句,如下:而且,如果你已经使用一个图象文件的话,把这个文件复制进
resources目录中。
MIDlet1.java:
package simpleMIDlets;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MIDlet1 extends MIDlet implements CommandListener
{

...

}

MIDlet2.java:

package simpleMIDlets;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class MIDlet2 extends MIDlet implements CommandListener

{

...

}

  4、参考图象文件和类文件的新的位置更新 manifest.txt和 JAD文件。
manifest.txt:
MIDlet-Name: MIDlet Examples
MIDlet-Version: 1.0
MIDlet-Vendor: My Corporation Inc.
MIDlet-1: MIDlet1, /resources/spin.png, simpleMIDlets.MIDlet1
MIDlet-2: MIDlet2, /resources/spin.png, simpleMIDlets.MIDlet2
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0


MIDlets.jad:
MIDlet-Name: MIDlet Examples
MIDlet-Version: 1.0
MIDlet-Vendor: My Corporation Inc.
MIDlet-Description: Packaging multiple MIDlets
MIDlet-Jar-URL: MIDlets.jar (179 Bytes, 下载次数: 0)
MIDlet-Jar-Size: 2884
MIDlet-1: MIDlet1, /resources/spin.png, simpleMIDlets.MIDlet1
MIDlet-2: MIDlet2, /resources/spin.png, simpleMIDlets.MIDlet2

  注意MIDlet-1和MIDlet-2的更改,被引用的类文件使用 simpleMIDlets.MIDlet1和
simpleMIDlets.MIDlet2包名。

  5、编译:编译源程序:
javac -bootclasspath c:mefcs-d jclasses *.java

  -d选项告诉编译程序,把类文件写入 jclasses目录。

  6、预验证:
preverify -classpath c:mefcs; -d pclasses jclasses

  -d选项告诉预验证器把经过预验证的类保存在 pclasses目录下。最后的 jclasses告诉预验证器到
什么地方寻找那些要预验证的类。

  7、创建 JAR:运行 jar程序:
jar cvfm MIDlets.jar manifest.txt -C pclasses . resources 

  创建一个名为 MIDlets.jar的文件,使用文件 manifest.txt作为清单文件的内容 (一个名为
manifest.mf的文件将被保存在 JAR中)。

  运行MIDlet,有两种情况:

  (1)从文件系统中运行MIDlet:
midp -transient file://MIDlets.jad

  (2)从web服务器上运行MIDlet:把JAR文件和JAD文件上传到web服务器,输入下面的命令来浏览
MIDlet:
midp -transient MIDlets.jad (179 Bytes, 下载次数: 0)
本文章来自中国IT实验室http://embed.chinaitlab.com/
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 11:00 , Processed in 0.066529 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表