| |
一、安装开发工具
本文是介绍如何编写在siemens 6688i上运行的java程序,本文从一个工程tutorial开始,以实例讲述了编写方法。由于本人也是个初学者,还没有仔细看过java的书,只是略有点c++基础,对java的术语都不知道,有错误的地方还请大家指正,并且本文会不断更正、完善。 阅读本文前,请确认您是否具有一定的java基础或c/c++基础,如果不是,请首先学习java的基本语法。
本文的所有例子都是在borland jbuilder 6 personal + borland mobileset 2.0 + siemens mobility toolkit(smtk)6688i v1.0 beta 7上运行通过的,另外还需要打包工具jar。关于这四个工具的下载地点请去我的论坛查找。
开发工具的安装与设置 首先安装borland jbuilder 6 personal,安装完成后初次运行需要注册,选择have license key,点next>,选择paste license key text,然后把下面这堆注册码复制进去,在确认一次协议后就ok了。 注册码如下: %26%ffj%f4%00%00%023%df%dd%23f %bd%83%df3%cd%02%1d%e0%d7%a1%1 4%c1%7e%28%a8%ea%c0x%dew%3a%c3 %b2%abx%92%02%14%81%8d%f4%0b%9 c%27y%90%df%fe%7f%df%23%7e%a7% f2%e09%a1%00%7b%81%aa%9c%1a%b0 _%28%cb%e8%eba%a1fn%f9%99%d9v% 87%01f%d8%8e%fa%3c%fc%1d%3e%a4 %be%b5%0a%e7%0bg%e3%ae%af%5d%a a%5c%17%fd%eb%cav%b2%09%16%e3% cd%e0%0b%f1e%3e%ca%fa%cb%09%d5 7%3c%9c%f2%fev%cf%0ev%8d%bc%cc y%85my%f6%cb%c8d%f1%5e%29%db%c 0%8a%17%e2k%22%f5%a9%80o%b1%20 %0c%d8%fd%b5%7c%ed%0d%7e%85%8a %f0t%9a%0d%17%f1%96%95%0b%e2%1 d%1e%8e%9c%ecq%86i%20%cf%e0%f8 %7f%d2%02%7e%ac%90%80-%d5mm%f3 %e7%86%1d%b7%5cw%a0%e8%f7%3c%8 4%1f%0a%bf%a0%e2j%e0%16%16%d7% 93%e82%aav%3b%89%b0%da%11%aemn %fd%a1%b2i%b2%08%13%e5%ac%cf%1 6%bct%1c%aa%a4%ff%7c%f8%24%05% bb%d7%cd%5e%f1%7ec%ac%ec%8b1%b ddc%91%d7%dc%29%a7ei%de%a3%f4% 2b%dd.o%ed%f3%8bt%e6e%24%d3%fc %fd%60%d7c%3d%c9%ca%ab%0d%fbf6 %95%d8%d1%5b%c8t%19%ed%8a%b1%1 8%81%02u%8a%8c%92%20%95vi%b5%8 2%e7h%d1y%1a%c1%bc%88%26%fd_%0 5%b3%a5%db%0b%8d%157%f9%fb%8cp %fa%0da%c8%99%96g%b5%02%3f%9c% c9%9a%08%97oq%a5%bc%92t%81.%05 %f7%a7%ff%18%be_%22%a6%8d%eak% d6%06%3d%a5%d7%dck%84o6%e4%e0% c5d%fa%27%7d%b8%c0%ab%3e%83uv% b8%f6%d2%2b%b1hn%a6%f0%a70%faf %7e%aa%c6%df%27%9d%0c%05%a0%97 %9e%3e%8bax%d1%bb%ac%1b%82%7b% 25%ce%8d%a6n%feiy%95%a6%f4%3e% ddn-%eb%b5%869%cd%5bo%da%ee%a8 l%edv%20%cd%e9%e1j%8f%5b%0b%82 %d4%b3t%a1%1ek%95%d7%ad%5b%ff% 18g%a1%f6%9b.%b6%7b3%e1%96%cf* %f2%05v%a6%e1%8f%3c%a1%05%29%d f%c4%d4p%b1o8%d3%d7%b4%12%97%0 5%0e%b2%d7%bcw%f0%17d%cd%90%e0 i%a3%00d%90%bd%c4l%b1ii%96%e1% bd%3f%ab%28z%f5%d2%92%25%ff6h% db%e9%c9%1a%99%27
接下来安装borland mobileset 2.0,安装完成后初次运行jbuilder6也需要注册,选择have license key,点next>,选择paste license key text,然后把下面这堆注册码复制进去,在确认一次协议后就ok了。 注册码如下: r%1b%abn%00%00%02l%df%dd%23f%b d%83%df3%cd%02%1d%e0%d7%a1%14% c1%7e%28%a8%ea%c0x%dew%3a%c3%b 2%abx%92%02%14%81%8d%f4%0b%9c% 27y%90%df%fe%7f%df%23%7e%a7%f2 %e09%a1%00%7b%81%aa%9c%1a%b0_% 28%cb%e8%eba%a1fn%f9%99%d9v%87 %01f%d8%8e%fa%3c%fc%1d%3e%a4%b e%b5%0a%e7%0bg%e3%ae%af%5d%aa% 5c%17%fd%eb%cav%c1%1e%7d%90%c0 %99o%8f%0b1%c7%ea%aa%0b%c8f_%8 3%9e%ec*%bcp8%82%b1%dc%18%87p% 08%95%d4%a4v%8d-w%b5%cf%87%07% 83i%3f%84%ca%9f%03%a3%5c%7f%a6 %93%ba%1d%f3l%15%96%8a%80a%8a% 11%1d%9c%eb%eec%e4u%04%fa%93%f cw%fc%21h%a2%f3%f8z%ac%11%7b%d 7%fd%96s%c36%25%9b%8a%95%1d%b2 %22d%a5%93%9a*%fa%09q%d7%cb%86 y%e3%1ah%c7%9c%9a%5c%b5%0b%27% f8%d2%bb%7c%bdnb%83%b1%bd%3b%d c%17n%f9%dd%adw%d1g%1f%a6%da%e fp%a4m%06%e2%f1%b2w%e8t%0d%b2% b2%ac%29%d8%1f%7b%92%ae%9a%14% c02l%da%f6%a5w%bd0%5c%8b%8a%f0 v%87%15b%f1%87%81k%94%02t%80%d 5%e1%0c%c8kl%ba%a9%fe.%eb8l%80 %ad%8ci%8fmd%d0%c1%e5r%d7%27%7 b%aa%ca%a3b%f7m%1e%d4%bd%e7%2c %8a0l%b2%ae%81%7e%88%7bh%f1%8d %ae%02%e8%3b%2c%89%82%89%5d%8e ii%bd%c2%ee%10%8d%3do%e3%e8%fc n%ce%17u%ba%9d%cao%bfwf%f2%e0% e5%7e%fc%02%5e%82%92%cb%13%ed8 d%c6%d2%9bq%e2-k%98%c4%dae%a2% 1cc%c1%a3%aey%99%13%14%e5%8a%f 64%90%10u%8f%83%ba%25%c93%00%9 6%e2%c0g%9e%20b%ff%d6%f9%01%be %28c%ee%fc%d9e%81h%14%90%ce%d9 9%c3y%1a%eb%a1%91%1f%89%28y%90 %9b%aez%9c%1a%05%9e%e5%c6b%948 7%ff%a6%e0%7e%87lp%f5%d3%a6%3b %b1%0b6%dd%c5%a5%14%fbbf%96%ea %9bg%84%19v%ba%f6%ff%5c%f7e%5b %d1%d0%a3%1b%fbb%5c%f7%87%d7-% f6%0b%7d%dc%87%d52%dad%1b%fb%8 7%cbz%c1%2ci%c2%b8%e5%17%97t%1 1%86%af%dcs%ef6%3d%c4%cc%f2%1b %9e%25%15%f2%cb%d2%05%aai%5e%d 2%c1%ba%05%865%7c%ad%91%c2%29% a2q%3c%b5%f4%ads%c3ys%d4%f9%f2
最后安装siemens mobility toolkit(smtk)6688i 1.0 beta8 或 smtk 3118 1.0 beta8,安装过程中会自动识别jdk的路径为jbuilder6安装路径下的jdk1.3.1。 全部安装完成后还需要配置一下jbuilder6。打开jbuilder6,然后点菜单tools->configure jdks,在jdk home path栏点change,选择6688i smtk安装的路径,要选到6688i_1b8或3118_1b8为止,确定后上面的name栏会自动变成siemens,然后点ok搞定。
二、第一个工程
新建一个工程 在jbuilder6中先新建一个工程:点菜单file -> new project,在对话框中输入工程名、路径等内容。请在这里输入name:tutorial;directory:d:mydocjava utorial(或你自己选择的路径),然后直接点finish就可以了。 java是基于类的,每个公共类都必须新建一个文件。 点菜单file -> new…,在对话框中双击class,在class name栏输入类名称tutorialmain,至于上面的package用默认的就可以,下面的base class是定义基类,可以以后改。点ok就可以了。 用同样的方法建立类tutorialform和tutorialcanvas。 这三个文件的内容分别是: tutorialmain package tutorial; import javax.microedition.midlet.*; import javax.microedition.lcdui.*;
public class tutorialmain extends midlet { protected static tutorialform pstart; protected static display display;
public static void main(string args []) { tutorialmain app = new tutorialmain(); app.startapp(); }
public tutorialmain() { pstart = new tutorialform(); }
protected void pauseapp() { }
protected void startapp() { display = display.getdisplay(this); pstart.activate(display, this); }
public void destroyapp(boolean param) { display.setcurrent(null); notifydestroyed(); } }
tutorialform package tutorial; import javax.microedition.lcdui.*;
public class tutorialform extends form implements commandlistener { protected static final command[] commands = { new command("开始", command.ok, 0), new command("退出", command.stop, 1), };
protected static display display; protected static tutorialcanvas pgame = new tutorialcanvas(); protected static tutorialmain winmain;
public tutorialform() { super("java教程"); append("版本:0.1.0网址: hzfeng.yeah.net");
for (int i = 0; i < commands.length; i++) addcommand(commands[i]); }
public void activate(display disp, tutorialmain tmain) { display = disp; winmain = tmain; display.setcurrent(this); setcommandlistener(this); }
public void commandaction(command cmd, displayable obj) { if (cmd == commands[0]) { pgame.activate(display, winmain); } else winmain.destroyapp(true); } }
tutorialcanvas package tutorial; import javax.microedition.lcdui.*;
public class tutorialcanvas extends canvas implements commandlistener { protected static final command[] commands = { new command("继续", command.ok, 0), new command("退出", command.stop, 1), }; protected static display display; protected static tutorialmain winmain; protected graphics g;
public tutorialcanvas() { for (int i = 0; i < commands.length; i++) addcommand(commands[i]); }
protected void paint(graphics parag) { g = parag; g.drawstring("你好", 0, 0, graphics.top|graphics.left); }
public void activate(display disp, tutorialmain tmain) { display = disp; winmain = tmain; display.setcurrent(this); setcommandlistener(this); }
public void commandaction(command cmd, displayable obj) { if (cmd == commands[1]) winmain.destroyapp(true); } }
这里先不对这些代码作解释,先演示一下怎样对工程进行编译和运行。
编译运行 点菜单run -> run project,第一次运行会弹出对话框询问要执行的主类(main class),也就是从这个类开始执行,切换到midlet子项,点“…”浏览,展开tutorial,选中下面的tutorialmain,然后ok。 jbuilder会自动调用6688i的仿真程序对程序进行仿真。 每次运行前都会自动编译,如果有错误,会有出错显示。
打包执行 编译好的文件都放在工程目录下的classes里,里面有一个以package名称命名的子目录,打包的时候要包括这个子目录。 由于打包程序jar是以命令行方式运行的,所以通常做个bat文件打包会比较方便。可以先将jar.exe复制到classes目录里,然后在bat文件中写jar cf tutorial.jar tutorial,执行以下就搞定了。 下载到mmc卡上的时候,现在javajamgame下建立一个tutorial目录,然后将tutorial.jar复制到该目录下,另外还要将工程目录下jad目录中的tutorialmain.jad也复制到这个目录中。 现在可以执行一下试试看了。
示例说明 tutorialmain是起始类,由midlet继承而来,其中的public static void main(string args [])就像c语言里的main函数一样,是程序第一个执行的函数,这是52版开始要求的,52版以前可以不需要此函数。startapp里是开始运行程序所作的一些事,display.getdisplay()是获取屏幕显示的对象,pstart.activate()见tutorialform里的定义,其他的就没什么可说的了,依样画葫芦就可以了。 tutorialform是由form类继承而来,form是一个窗体,有标题,可以显示文字也可以列出选项、设置按钮。implements commandlistener表示这个类还用到了commandlistener这个组件,这是一个监测按钮动作的组件。 super("java教程")是调用form的构造函数,里面的字符串就是窗口的标题。append()是在窗口上插入要现实的内容,不仅可以插入文字还可以插入图片等。for (int i = 0; i < commands.length; i++) addcommand(commands[i]); 是把上面定义的按钮数组command[]添加到窗口上。 commandaction是按钮按下的响应函数,通过参数cmd可以判断出哪个按钮被按下了,从而可以采取相应的措施。 activate函数是自定义用来启用tutorialform类的。包括display.setcurrent(this)将屏幕输出联系到自己身上,setcommandlistener(this)开始对按钮动作进行监测。而winmain变量的设置是为了调用tutorialmain的destroyapp函数以便退出程序。 tutorialcanvas是由canvas类继承而来,同时也需要监测按钮动作。canvas是一个画板,可以在上面画图、画字符串等等。 paint函数是当canvas类显示时调用的绘图函数,g.drawstring("你好", 0, 0, graphics.top|graphics.left)是以坐标(0,0)作为左上角画了两个字“你好”。其他的函数与tutorialform类似。
三、几个常用类
常用类简介 midlet类 老实说我对这个类的理解也不深刻,也就是照着其他的程序依样画葫芦,我认为这是一个起始类,程序执行总是从这个类开始。必须要有的事件函数是startapp、pauseapp、destroyapp,顾名思义,就是起始、暂停、终止的时候起作用。
form类 form是一个窗体,有标题,可以显示文字也可以列出选项、设置按钮。
canvas类 canvas是一个画板,可以在上面画图、画字符串等等。必须要有的事件函数是paint,在显示的时候调用。
graphics类 graphics是一个画图的类,有画框、画线、画块、画圆、画字符串等功能函数。
|
|