当前位置:早雪网网络学院编程文档Java → J2ME学习札记1

J2ME学习札记1

减小字体 增大字体 作者:不详  来源:supcode.com收集整理  发布时间:2005-7-22 18:42:19
onsole按钮将控制台中的
信息完全清除。
 现在来看看菜单。Ktoolbar的菜单极其简单,没有什么可说的。Project菜单的package菜单
项的作用是将当前项目打包输出。这个菜单项特别有用,当你完成项目开发之后,使用这个菜
单项可以产生一个jar文件,这样就完成的项目的初步发布。
 现在来创建一个新的项目,单击New Project按钮,或者是使用File菜单的同名菜单项。出现
一个新窗口。这个新窗口有两个文本框,第一个文本框是Project Name,输入fancy。第二个文
本框是MIDlet Class Name,输入fancy.test.HelloWorld。然后单击OK,又出现一个对话框,要
你配置项目的环境,不理,单击OK按钮关闭该窗口,回到Ktoolbar的主窗口。经过上述步骤,你
已经创建了一个名为fancy的J2ME项目。

安装J2MEWTK以后,你应该仔细浏览一下J2MEWTK的目录结构,这是一个很好的习惯。J2MEWT
K的目录结构如下:
appdb文件夹:里面有duke的一些靓照。
apps文件夹:里面有J2MEWTK的一些例子程序,我们建立的项目文件也存放在里面。
bin文件夹:里面全部是exe程序。
docs文件夹:不用多说了,是地球人都知道。
lib文件夹:存放MIDP API。
wtklib文件夹:存放J2MEWTK用到的类库,以及一些资源文件,比如按钮的图标等等。
 在这些文件夹中,apps文件夹特别需要留意,这个文件夹有下列子文件夹:
example:存放J2MEWTK的例子,侧重于图形方面,例子比较大,复杂,难看懂。
lib:空,不知道放什么东西。
tmplib:空,不知道放什么东西。
UIDemo:存放J2MEWTK的例子,侧重于用户界面设计方面。例子不大,难度中等。
fancy:这个文件夹原来是没有的,当我们创建fancy项目的时候,J2MEWTK自动为我们创建的文
件夹。
 进入fancy文件夹,它里面又有很多子文件夹,如下所示:
bin:存放项目的打包输出文件。
classes:存放编译器产生的class文件。
lib:空,不知道有什么用。
res:存放资源文件,例如项目中用到的图片。
src:存放项目的源代码。
tmpclasses:存放编译器产生的class文件,是classes文件夹的镜像。
tmplib:空,不知道有什么用,是lib文件夹的镜像。

现在该是使用J2ME说Hello World的时候了。选择你最喜欢的文本编辑器,例如Editplus,
输入下面的代码:
package fancy.test;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloWorld extends MIDlet implements CommandListener
{
private Display display;
        private Form props;
 
private Command exitCommand = new Command("Exit", Command.EXIT, 1);

public HelloWorld()
{
display = Display.getDisplay(this);
        }

public void startApp()
{
props = new Form("Hello World");
props.append("Hello World!\n");

props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
        }

public void commandAction(Command c, Displayable s)
{
if (c == exitCommand)
{
destroyApp(false);
   notifyDestroyed();
}
        }

public void destroyApp(boolean unconditional)
{
         }

public void pauseApp()
{
display.setCurrent(null);
props = null;
        }

}
 然后将该文件保存在J2MEWTK_HOME\apps\fancy\src\fancy\test目录下面,文件名为Hello
World.java。注意:你需要在fancy\src目录下面创建fancy文件夹,然后再在fancy文件夹下面
创建test文件夹。最后才保存HelloWorld.java文件。
 现在转到J2MEWTK的主窗口,单击Build按钮,编译整个项目,查看控制台的输出信息,一切无
误,再单击Run按钮,运行此程序。运行效果如下图所示:


要停电了,只好写道这里了。
 1) package fancy.test;
 这行代码声明当前类所在的包。这是有必要的。而且这个包名必须和src文件夹中的目录结
构对应。

 2)
 import javax.microedition.midlet.*;
 import javax.microedition.lcdui.*;
 这两行代码导入必要的Java包,这两个包的作用在后面会提及,这里就不多说了。

3)
 public class HelloWorld extends MIDlet implements CommandListener
 J2ME程序一般应该继承MIDlet,实现CommandListener。就如Applet必须继承Applet,可能实
现Runnable接口一样。

4)
 private Display display;
 private Form props;
 定义两个私有对象,Display代表屏幕,显示区域。Form是容器的一种。在J2ME程序中,不但
有容器的概念,还有画布(Canvas)的概念。这个程序在Form容器中显示文本。

5)
 private Command exitCommand = new Command("Exit", Command.EXIT, 1);
 声明一个Command对象。J2ME的事件处理机制和J2SE的事件处理机制不太一样。在J2ME程序
中,必须预先定义一些Command对象,注册到程序中。当设备发生了某个事件,会产生相应的Co
mmand对象,并把它传递给一个事件处理函数----commandAction(),由它对所产生的事件做统
筹处理。

6)
public HelloWorld()
{
  display = Display.getDisplay(this);
}
 这个是构造函数,函数内部,调用Display对象的静态方法---getDisplay(),获取屏幕对象,
实例化display变量。这个调用是必要的。你可以在构造函数中做这个工作,也可以在startA
pp()方法中做这个工作。推荐在构造函数中完成。

7)MIDlet程序的运行流程
 构造函数---->startApp()------>侦听事件,接受命令------->commandAction()方法----
--->调用别的方法----------->如果是exit命令--------->pauseApp()--------->destroyA
pp()方法。实际上MIDlet程序的运行流程和Applet程序的运行流程差不多。

8)
public void startApp()
{
props = new Form("Hello World");
props.append("Hello World!\n");

props.addCommand(exitCommand);
props.setCommandListener(this);
display.setCurrent(props);
         }
 这是startApp()方法。这个方法是父类的抽象方法,在子类中必须予以覆盖。首先实例化F
orm对象----------props,Form的构造函数的参数(Hello World)就是屏幕的标题。Form对象
是一容器,在里面可以包含别的东西,props.append(“…..”);的作用就是在这个容器中存放
一个字符串。这个字符串会在屏幕中显示出来。
 接下来的三行代码分别做这样的工作:
 将Exit命令注册到Form对象(props)中,这样Form对象(props)可以对该命令作出响应。
 设置Form对象(props)的命令监听者。
 将Form对象设置为屏幕显示的对象。
 你可以试着注释掉这三行代码,再编译运行这个程序,看看会发生什么情况。

9)
public voi

上一页  [1] [2] [3] [4]  下一页

[数据载入中...] [返回上一页] [打 印]