日期:2014-05-20  浏览次数:20762 次

新建第一个J2me程序----低级UI绘制的Hello MIDlet
  搭配好环境。在工作区域。
new -- project -- 选择j2me下面的J2me MIDlet Suite -- 选中J2me MIDlet Suite然后next -- 填写project name 然后next  --  finish。

  第一个J2me程序新建完毕。
  在src中new -- clss  填写名字。finish。
以下是我自己写的第一个demo。还有自己写的注释。
1。canvas类
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;


public class MyCanvas extends Canvas{

protected void paint(Graphics arg0) {
// TODO Auto-generated method stub
//绘制屏幕颜色
arg0.setColor(0, 0, 255);
        /*
         * 绘制屏幕的起点坐标,还有Graphics所自有的坐标
         */
arg0.fillRect(0, 0, getWidth(),getHeight() );
/*
* 绘制字体颜色。与绘制屏幕颜色有先后之分
*/
arg0.setColor(255, 0, 255);
arg0.drawString("Hello MIDlet Canvas", 10, 10, Graphics.TOP|Graphics.LEFT);

}

}
2。Hello类。也是继承了入口类的显示的部分
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/*
* j2me程序的运行必须继承j2me的入口类MIDlet。类似android中继承activity
*/
public class Hello extends MIDlet {
private Display display;
/*
* 在j2me中,MIDlet生命周期三个,相对android中的7个少。startApp,PauseApp,destroyApp。
* 分别表示活动状态,暂停状态,销毁状态
*/

//程序启动的时候会调用该方法初始化用户需要的资源
protected void startApp() throws MIDletStateChangeException {
/*
* J2me中所有可显示的组件都是直接或间接的继承了Displayable,
* 直接的是Canvas和Screen。不同的继承导致了低级 UI和高级UI的区别。
* J2me中现成的UI组件都是直接或者间接继承了Screen。只要调用
          Display.getDisplay(MIDLet instan).setCurrrent(Displayable disp),
                           切换界面的时候也可以使用该接口
*/
display = Display.getDisplay(Hello.this); 
MyCanvas mc = new MyCanvas();
display.setCurrent(mc);

}
//当用户来电话的时候会调用此接口,用户可以调用此接口停止线程的操作
protected void pauseApp() {
}
//程序推出的时候调用,用户通过调用该接口处理掉处于活动状态的线程
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
}

令我意外的是这个不需要配置xml文件,而且即使是高级UI实现的j2me也不用配置。以后继续研究。现在正在看ANT解析。貌似有难度的说。

下面说运行怎样运行:
右键工程--run as--run configurations--选择wireless Toolkit下面的New_coonfigguation -- 在Midlet标签选项卡上面选择Browse导入本工程名 ---
在Executable的midlet选项中点击Search找出程序的入口类。--- Run。
1 楼 zhuguowei 2012-02-17  
你好:
按你的步骤,依样画葫芦,但最后执行时报了下面的错:
Syntax:

emulator [arguments]

In order to get commands supported by given device run:
emulator.exe -Xdevice:<device name> -Xquery

Generic list of arguments is:

-version           Display version information about the emulator
-help              Display list of valid arguments
-classpath, -cp    The class path for the VM
-D<name>=<value>   Set a system property
-Xdebug            Use a remote debugger
-Xrunjdwp:[transport=<transport>,address=<address>,server=<y/n>,
           suspend=<y/n>]
                   Debugging options
-Xdevice:<device>  Select a device skin for the emulator
-Xdomain:<domain_name>
                   Set the MIDlet suite's security domain
-Xdescriptor:<JAD file name>
                   The JAD file to be executed

-Xjam[:install=<JAD file url> | force | list | storageNames |
       run=[<storage name> | <storage number>][,<MIDlet class name>] |
       remove=[<storage name> | <storage number> | all] |
       transient=<JAD file url>]
                   Java Application Manager and support
                   for Over The Air provisioning (OTA)
-Xquery            Print device information
-Xautotest:<JAD file url>
                   Run in autotest mode

望能指教是什么原因?谢谢!