整理手机板书内容_第1页
整理手机板书内容_第2页
整理手机板书内容_第3页
整理手机板书内容_第4页
整理手机板书内容_第5页
已阅读5页,还剩29页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档 可以编程吗? 硬件,根本可以按计算机对待.作 为计算机,最根本的部件是 主机处理器 CPU+内存.从软件上看就是 操作系统.结论: 实际上就是一台小的计算 机,其中配置一定的处理器和一定容量的内 存,并工作在某种操作系统下.常见的 芯片CPU:目前英国 ARM架构占据 处理器 90%的市场份额.1.1 ntel 的 XScale 处理器2. ARM Adva need RISC Mach in es,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种 技术的名字.3. OMAP :无线设备制造商,诸如诺基 亚、索尼爱立信、Palm、惠普公司及索尼等 业界顶

2、尖的设备制造商,以及诸如宏碁、 LuckyGoldstar、HTC、Sendo 及其它的主要设计制造商均宣布支持 TI的OMAP处理器 平台.常见的 操作系统:操作系统1. Symbia n 操作系统:Symbia n系统的 目前比拟常见的是Nokia、三星、西门子2. Windows Mobile(windows CE)操作系统3. iOS系统:iphone系列手的操作.4 Palm系统5. .Android系统新型 操作系统,支持无 线互联网技术.主流的 编程体系:MidpAdriod本课程以MIDP 程序设计为框架展开.编程工具 WTK2.5,它要求jdk版本为1.5版 以上.用WTK开

3、发一个 程序的过程:新建一个工程(new project),完成后结 果:注意以下三个信息:演示程序src"将java源程序放在演示程序src文件夹中只有将源程序放在这个位置上,才能被WTK找到并编译.演示程序res"演示将工程所需的资源文件如图片存放在程序 res 文件夹中,只有这个文件夹中的资源文件才能被 WTK 读出.演示程序 lib" 这个文件夹中存放外来的库文件略 按以上要求存放文档后,就可以编译程序 Build ,编译过程中可能产生错误,那么 必须改正源程序中的错误,再编译,直到程 序无错为止.运行程序 Run . 程序结构: import javax

4、.microedition.midlet.*; import javax.microedition.lcdui.*; public class DEMO extends MIDlet public void startApppublic void pauseApppublic void destroyAppboolean b 以上是一个最简单的 程序,它可以说明一个 程序的根本结构:1. 程序由假设干类( class )构成从 java 程序的观点,类应如下:class 类名2. 在假设干类中,必须且只能有一个主类.它是程序中 最开始执行的类.主要类有两个标志: public 、必 须扩展于

5、MIDlet 类.import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class DEMO extends MIDletpublic void startApp()public void pauseApp()public void destroyApp(boolean b)3.java 类的写法:class 类名变量声明; / 可有可无,可多可少 函数声明; / 可有可无,可多可少变量是程序运行过程中用于存放数据的空间,这些空 间是以变量的形式出现,变量需要声明类型名 变量名int x,y;声明

6、了 x,y两个整型变量,存放整数.double乙 声明了一个浮点型变量z,存放实数. char c;变量c中存放一个字符String str; str 可以存放一个字符串. 函数,由一组语句构成的程序段.值类型 函数名 参数表 函数体;如:public void destroyApp boolean b X=7;函数是对数据的加工过程, 它由名称、参数表加 工的原料,也就是被计算的数据、值类型加工结 果的类型以及函数体加工过程.考查 程序:public class DEMO extends MIDletpublic void startApppublic void pauseApp publi

7、c void destroyAppboolean b 这个 程序是一个类,名字是DEMO它是扩展于 MIDlet 类.类中没有声明变量, 声明了 startApp 、 pauseApp和destroyApp三个函数.三个函数都没有函 数体.可见,作为一个 程序必须是一个 java 类,而 且必须 扩展于MIDIet类,声明startApp、pauseApp和 destroyApp 三个函数 . 在 程序中,可能会用到一些其他类,如 MIDIet, 在程序中必须导入 import 这些类.import javax.microedition.midIet.*;import javax.microe

8、dition.Icdui.*;MIDIet 类就在 javax.microedition.midIet 包文件夹中. * 表示所有类.类似于C中的#include<math.h>的作用第三讲在 程序中的三个函数是与 上的一些事 件相关联的,当 程序运行过程中发生了某些事件 时,系统就会自动调用这些函数.startApp 函数:当 程序运行时,首先初始化 构造函数, init 函数,然后自动调用该函数.所 以它是一个程序的入口局部,所以一个程序的功能代 码将从这个函数开始.pauseApp函数:当一个 程序运行时,如果有 了 呼叫、短信息,这时系统会暂停本程序,暂停 本程序之前,自动

9、调用该函数.因此在接听 或阅 览短信之前,程序应该做的准备工作代码可以写在该 函数中.destroyApp 函数:在程序即将结束时,调用的函 数.在这个函数中, 可以设计一些程序的善后处理代 码.程序中这三个函数是必不可少的,除此之外,程 序还可以设计其他的函数甚至其他类.在 上显示文本框:import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class DEMO extends MIDletDisplay display;TextBox tb=new TextBox( “标题 ,“正文, 200

10、,0);public void startApp()display=Display.getDisplay(this); display.setCurrent(tb);public void pauseApp()public void destroyApp(boolean b)可以显示在屏幕上的对象必须是 Dispalyable 类的 子类的对象.1 声明并创立TextBox对象.TextBox tb=new TextBox( 标题 “正文,200, 0);TextBox生时必须给出四个参数:标题,正文,最大长 度,输入限制.2.取得显示屏幕Display disp=Display.getDis

11、play(this);3将可显组件设置到屏幕.disp.setCurrent(tb);第四讲: 程序中的菜单(命令项).MIDP中的菜单是由Command实现.声明并产生命令项的方法:Command c;C=new Comma nd文字命令型态,优先级;或者Comma nd c=new Comma nd文字命令型态,优先 级以上的语法中,命令型态:-命令类型可以是以下8个值之一? Command.BAC:K 返回前一屏幕;? Command.CANCEL取消当前正在进行的工作;? Command.STO:P 中断当前正在运行的动作.? Command.EXIT退出应用程序;? Command.

12、HELP请求在线帮助;? Command.lTEM选择命令是当前屏幕中的某一项;? Command.SCREEN应用到当前屏幕的命令;? Command.OK确定当前正在进行的动作;不同型态的命令将出现的位置不同. 优先级局部表现为一个整数, 整数越小, 优先级越高. 命令项产生后,可以用addCommand函数将命令项设 置到 Dispalyable 如 TextBox.命令型态决定命 令选项出现的位置:命令项出现在屏幕最下行.点中两个软件按钮,就可 以选中某个菜单.左边永远只能出现一项菜单.其他 菜单都会出现在右边,其他菜单如果有多项,那么折迭 成一个me ni多级菜单.所以,使用频率最高

13、的菜单应该设计在左边.BACK CANCE、STOP和EXIT型态的菜单可以出现在左边, 其他四种型态只能出现在右边.总结,各种菜单项出现的规律:型态决定位置,如果把型态也理解为一种优先的话,那么上述八种型态的优先级别是依次降低的.高四级可以出现在左边.除型态之外,型态相同的前提下优先级可以决定各菜单出现次 序.Comma nd c=new Comma n文字,命令型态,优先级 优先级值越小,越先出现.即:菜单出现的次序是: 先决定于型态; 型态相同时, 决定于优先 级;型态和优先级都相同,那么决定于在程序中添加的次序.菜单响应:当用户选定了某菜单时,都应该产生某一个动作.程序中总 需要将某些

14、代码的执行与某菜单相联系,这就是 事件模型 . midp中的事件模型:事件,是 中某状态改变.这些事件有些是由系统产生的, 如 程序被呼叫中断. 有些事件是人为产生的, 如按下了某按 键.系统事件的响应,由系统负责,如 startApp,pauseApp,destroyApp 函数的调用就是如此. 但人为产 生的按键事件,必须在程序中将事件与动作函数对应.这种 编程规律,就是事件模型.import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class MyMIDlet extends MIDlet

15、Display disp;TextBox tb=new TextBox("TextBox 演示程序 "," 天气真好 ",256,1) ;Comma nd comm仁 new Comma n退出 ,Comma nd.SCREEN,2),comm2=new Comma nd复原 ,Comma nd.SCREEN,1),comm3=new Command(" 去除 ",Command.EXIT,2),comm4=newComma nd选项 ,Comma nd.SCREEN,2);public void startApp()tb.addCo

16、mmand(comm4);tb.addCommand(comm1);tb.addCommand(comm2);tb.addCommand(comm3);disp=Display.getDisplay(this);disp.setCurrent(tb);public void pauseApp()public void destroyApp(boolean b)事件: 上发生的状态改变. 有些事件由系统产生, 如: 程序 的运行初始化,中断,撤消;系统产生的事件的响应,由系 统规定.有些事件由操作者产生, 如:操作者按下键盘上的某键. 这些事 件可以在程序中通过程序处理. 这样的事件分成两大类:

17、 高级事 件与低级事件.高级事件:由操作者按下 软件按钮 产生的事件.对于高级事件的响应与硬件无关, 容易移植,针对某公司某款式 型号上写出的高级事件响应程序, 将它移植到另一公司另一款式 或另一个型号的机器上,一定能正确执行.菜单事件就是高级事 件之一.低级事件:指操作者按下除软件按钮之外的其他按键所产生的事 件.由于不同公司不同款式不同型号上, 对这些按键的定义可能 差异,所以针对某机型上设计的低级事件响应程序,在另一机型上不保证能正确运行. 可见,低级事件与硬件相关,不保证移植 性.菜单事件的响应:菜单事件,是由一个接口去监视并处理.Comma ndListe ner程序中,首先必须指定

18、事件的监视器,它负责监视事件是否发生 当事件发生后,进行处理.监视器是一个类的对象,任何类都以指定为监视器,但 它必须实现CommandListener接口 .class A implements CommandListener最简单的情况下,也可以指定主类程序中MIDIet的派生类作监 视器.pubIic cIass A extends MIDIet impIements CommandListener Java语言规定,当一个类实现(implements )了接口时,在该类 中必须写出接口中的 所有接口函数的函数体. 在接口中只声明函 数,但没有函数体.Comma ndListe ner接

19、口中只定义了一个抽象函数(只有声明,没 有函数体):public void commandAction (Command c, Displayalbe d);接口的作用,将菜单项选中的动作,与comma ndActio n函数相关联,即中选中菜单时,程序一定会转到这个函数.所以,在实现该接口的类中,就应该给出这个函数的函数体.public void commandAction(Command c, Displayalbe d);程序运行时, 如果有某个菜单项被选中, 那么程序跳转到这个函数处运行.import javax.microedition.midlet.*;import javax.m

20、icroedition.lcdui.*;public class MyMIDlet extends MIDlet implementsCommandListenerDisplay disp;TextBox tb=new TextBox("TextBox 演示程序","abcdefg",256,1) ;Comma nd com m仁new Comma nd 大写 ,Comma nd.SCREEN,2);public void startApp()tb.addCommand(comm1);tb.setCommandListener(this);disp=Di

21、splay.getDisplay(this);disp.setCurrent(tb);public void pauseApp()public void destroyApp(boolean b)public void commandAction(Command c, Displayable d)tb.setString(tb.getString().toUpperCase();以上程序中用到了三个函数:文本框类( tb )的函数getString()得到文本框上显示的字符串, 结果为 StringsetString()将字符串设置到文本框上字符串类的函数:toUpperCase()将字符串中

22、的小写字母转为大写字母.当程序中的多菜单先后被选中时, 各菜单的选中, 都会转到同一函数comma ndActio n中执行.public void commandAction(Command c, Displayabled).在函数中的参数c和d,是由系统产生并传给函数.所以c和d可以 在函数中作为数据直接使用.C中保存着倒致程序转到 comma ndActio n函数的菜单变量的名字.D中保存着这时的屏幕对 象.程序中通过判断c的值可以决定是哪个菜单被选中. 多菜单操作:import javax.microedition.midlet.*;import javax.microedition

23、.lcdui.*;public class MyMIDlet extends MIDlet implementsCommandListenerDisplay disp;TextBox tb=new TextBox("TextBox 演示程序 ","abcdefg",256,1) ;Comma nd com m仁new Comma nd 大写 ,Comma nd.SCREEN,1), comm2=new Command(" 小写 ",Command.SCREEN,2), exit=new Comma nd(退出 ,Comma nd.BA

24、CK,1);public void startApp()tb.addCommand(comm1);tb.addCommand(comm2); tb.addCommand(exit);tb.setCommandListener(this);disp=Display.getDisplay(this);disp.setCurrent(tb);public void pauseApp()public void destroyApp(boolean b)public void commandAction(Command c, Displayable d)if (c=comm1)tb.setString(

25、tb.getString().toUpperCase();elseif (c=comm2)tb.setString(tb.getString().toLowerCase();else if (c=exit)notifyDestroyed();其中, notifyDestroyed() 函数是 MIDlet 类的函数,表示撤消本MIDlet;解释程序中的函数调用方法:notifyDestroyed();disp.setCurrent(tb);有些函数调用时需对象前缀, 有些不需.其实,在Java程序中任何函数都是属于某个类,不存在不属于类的游离函数.程序中, 如果调用其他对象的函数,必须指明对象

26、名,如: disp.setCurrent(tb);但,调用本类的函数,可以不加前缀.notifyDestroyed();要加前缀,可以:this. notifyDestroyed();notifyDestroyed() 函数是 MyMIDlet 类从 MIDlet 类中继承而来的 函数.;List选择的组件,在一组可选项中,选择一个或多个选项.构造函数一:public List(String title,int listType)title 表示标题, listType 表示类型.这种方式可以创立一个 空白的 List 对象,没有可选项.可以在随后的代码中用 List 的 appe nd添加可

27、选项.构造函数二:public List(String title, int listType, String stringElements, Image imageElements) 产生完整的 List 对象,既有标题 ,也有内容. List 有三种形式:Choice.EXCLUSIVE: 单项选择 ListChoice.IMPLICIT: 隐含菜单,是一种单项选择 List ,选中时 会触发事件Choice.MULTPLE 多项选择 List当显示 List 后,选中某项时,可以用以下函数得到我们 所选中的工程:public int getSelectedIndex( )得到选中项的序号

28、, 0,1,2, 等.适合于单项选择时.-如果是多项选择List可以用- public int getSelectedFlags(boolean sArray)返回值返回我们选择的项数, 具体的选项在 sArray 表 达.例如:public void commandAction(Commandc,Displayable d)boolean b=new boolean3;String msg=" 共选择了"+list.getSelectedFlags(b)+"项 , 它们分别是: "for (int i=0; i<b.length; i+)if (

29、bi) msg=msg+txti+" "TextBox tb=new TextBox(" 您的选择是:",msg,256,1);disp.setCurrent(tb);Choice.EXCLUSIVE和Choice.MULTIPLE两种形态的 List 本身并不触发事件,所以在程序中必须再用Comman触发事件,在事件处理函数中,检测我们所选的工程.Choice.IMPLICIT 形态的 List 是单项选择,但它选中后自身触发Commar事件,不需要再设计Comman以触发事件,一旦选择,自 动调用.public void commandAction(

30、Command c,Displayable d)但,这时 在c中传入一个常量:List.SELECT_COMMAN由此可以区别是菜单还是 List 触发的事件,如下例:public void commandAction(Command c,Displayable d)if (c=List.SELECT_COMMAND)TextBox tb=new TextBox(" 您的选择是:",txtlist.getSelectedIndex(),256,1);disp.setCurrent(tb);elsenotifyDestroyed();带图片的 List;tryimg0=Ima

31、ge.createImage("/TranslatorPlugin.png");img1=Image.createImage("/LoginAssis.png");img2=Image.createImage("/ExtYouxi.png");catch(Exception e)list=new List(" 请选择文化程度",Choice.IMPLICIT,txt,img);list.addCommand(exit);多屏切换:import javax.microedition.midlet.*;import j

32、avax.microedition.lcdui.*;public class ListDemo extends MIDlet implementsCommandListenerDisplay disp;List list;String txt="小学 "," 中学 "," 大学 "Image img=null,null,null;Command exit=new Command(" 退出",Command.SCREEN,1),retu=new Command(" 返回",Command.SCRE

33、EN,1);public void startApp()tryimg0=Image.createImage("/TranslatorPlugin.png"); img1=Image.createImage("/LoginAssis.png"); img2=Image.createImage("/ExtYouxi.png"); catch(Exception e)list=new List("请选择文化程度 ",Choice.IMPLICIT);list.append(txt0,img0);list.append(t

34、xt1,img1);list.addCommand(exit); list.setCommandListener(this); disp=Display.getDisplay(this); disp.setCurrent(list);public void pauseApp()public void destroyApp(boolean b)public void commandAction(Command c,Displayable d)if (c=List.SELECT_COMMAND) TextBox tb=new TextBox(" 您的选择是: ",txtlist

35、.getSelectedIndex(),256,1);tb.addCommand(retu); tb.setCommandListener(this);disp.setCurrent(tb);else if (c=exit) notifyDestroyed();else if (c=retu) disp.setCurrent(list);Alert 类也是一个屏幕对象类, 可以设置到屏幕, 它在屏幕上停留设定 的时间后,自动返回 之前的屏幕,因此它用于显示一些临时显示 的内容,比方提醒用户、显示信息.Item 子Form: 唯一一个可以自由设计界面的屏幕对象,它可以添加 类的对象.import

36、 javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class ListDemo extends MIDletDisplay disp;Form form=new Form(" 表单演示 ");public void startApp()TextField tf1=new TextField("姓名","",10,TextField.ANY);TextField tf2=new TextField("密码","&quo

37、t;,10,TextField.PASSWORD);form.append(tf1);form.append(tf2); disp=Display.getDisplay(this); disp.setCurrent(form);public void pauseApp()public void destroyApp(boolean b)简易计算器设计import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class ListDemo extends MIDlet implementsCommandL

38、istenerDisplay disp;Form form=new Form(" 简易计算器 ");TextField tf1=new TextField(" 数一","",10,TextField.DECIMAL),tf2=new TextField("数二","",10,TextField.DECIMAL),tf3=new TextField("结果","",10,TextField.DECIMAL);Command add=new Command(&

39、quot;+",Command.SCREEN,1), sub=new Command("-",Command.SCREEN,2), mul=new Command("*",Command.SCREEN,3), div=new Command("/",Command.SCREEN,4), exit=new Command("退出 ",Command.BACK,1);public void startApp()form.append(tf1);form.append(tf2);form.append(tf3)

40、; form.addCommand(add);form.addCommand(sub); form.addCommand(mul);form.addCommand(div); form.addCommand(exit);form.setCommandListener(this);disp=Display.getDisplay(this);disp.setCurrent(form);public void pauseApp()public void destroyApp(boolean b)public void commandAction(Command c, Displayable d) i

41、f (c=exit)notifyDestroyed();elsetrydouble a=Double.parseDouble(tf1.getString();double b=Double.parseDouble(tf2.getString();double s=0;if (c=add)s=a+b;else if (c=sub)s=a-b;else if (c=mul)s=a*b;else if (c=div)s=a/b;tf3.setString(""+s);catch(Exception e)图形编程:图形类.运行一个Canvas类,并将之放到屏幕时,之前的画面仍残留

42、在屏幕上,所以应该清屏,但Canvas未提供清屏函数.只能编程 去除屏幕,具体地是用背景色重画整个画布.import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class CanvasDemo extends MIDlet public void startApp() MyCanvas mc=new MyCanvas();Display.getDisplay(this).setCurrent(mc); public void pauseApp() public void destroyApp(boo

43、lean b) class MyCanvas extends Canvas int width, height;MyCanvas()width=getWidth(); height=getHeight();public void paint(Graphics g)g.setColor(0x00FFFFFF);清屏幕g.fillRect(0,0,width,height); /g.setColor(0x00ff0000);/g.drawArc(50,50,100,100,0,360);g.setColor(0x000000FF);g.setFont(Font.getFont(Font.FACE_PROPORTIONAL,Font.STYLE_BOLD,Font.SIZE_LARGE);g.drawString("ABCD 中国人",50,80,g.TOP|g.LEFT; 上的低级事件 高级事件?发生在 程序中的菜单 命令项 Command 选中事件.当通过软按 键选中Command&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论