手持移动设备JME应用开发.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《手持移动设备JME应用开发.ppt》由会员分享,可在线阅读,更多相关《手持移动设备JME应用开发.ppt(76页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、手持移动设备JME应用开发 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望4MIDP高级界面开发第章本章目标了解了解ScreenScreen的基本概念的基本概念了解基本屏幕类的开发了解基本屏幕类的开发掌握控件的开发技术掌握控件的开发技术掌握控件事件的开发过程掌握控件事件的开发过程掌握对话框的编写技巧掌握对话框的编写技巧掌握自绘画控件的开发技术掌握自绘画控件的开发技术 4.1MIDP高级界面高级界面v软件在进行每一步操作时所显示的电脑版面称为界面。一个好的界面必备条
2、件是:内容清楚、指示明白、屏幕美观和有亲切感。界面通常包含有图形和文字。程序界面的设计是对适当的控件进行取舍及功能的选择和处理的过程。在程序设计中,需要对设计的方法反复推敲、琢磨,才能使其达到完美的境界。但是MIDP的界面设计开发不同于一般的桌面程序,它受限于屏幕的大小、颜色、内存和处理能力,不可能做到像桌面程序那样花哨。所以一个好的界面也应该根据设备具体情况进行有针对性的设计,由于使用J2ME提供的基础控件,所以叫做高级界面。MIDP高级界面开发简介高级界面开发简介 v MIDP中定义的界面从逻辑上包括两组API:高级API和低级API。高级API提供了常用的应用控件,它主要强调可移植性,但
3、是高级API对于控件的显示外观只有有限的控制权,而且事件的使用也很有限,但它的优点就是提供了程序的高复用控件以及增加了系统的整体协调性和一致性。vMIDP程序界面是通过屏幕显示出来的。由于手机或其他无线设备,一般都具有一个显示屏幕,在屏幕上显示一幅画面就是一个Display对象所要实现的功能。每个MIDP程序都由Displayable对象来具体处理如何在屏幕上显示内容。MIDP程序可以根据手机使用者与程序的交互情况,把每次操作后的画面通过Displayable对象显示在当前屏幕上。Displayable是Display的一个继承类,它主要包括两个具体的实现类:高级界面开发类Screen和低级界
4、面开发类Canvas。4.1.1Display类的常用函数类的常用函数vDisplayable中MIDP1.0就定义的函数有:vboolean isShown()vvoid addCommand(Command cmd)vvoid removeCommand(Command cmd)vvoid setCommandListener(CommandListener l)vDisplayable中MIDP2.0新添加的函数有:vString getTitle()vpublic void setTitle(String s)vTicker getTicker()vpublic void setTic
5、ker(Ticker ticker)vpublic int getWidth()vpublic int getHeight()vprotected void sizeChanged(int w,int h)Display类的开发类的开发v以上函数都可以在Screen类和Canvas类中使用。但是进行MIDP开发的时候,一定要分清楚程序的开发环境,如果是在MIDP1.0的开发平台下开发,则MIDP2.0新添加的函数是不能够使用的。在MIDP2.0中,高级界面开发类的继承关系如图所示。高级界面开发类Screen类共有4个继承它的屏幕类,而Form屏幕类又共有8个继承Item类的控件类,其中在MID
6、P2.0开发平台中,Form类新增加了Customltem类和Spacer类。4.1.2Display类的开发类的开发 4.2事件处理事件处理v事件就是用户与GUI(图形界面)交互的时候所触发的事情。在J2ME中,事件会被传送至事件处理器,它是一个专门接受事件对象并进行翻译、处理的方法,这个事件处理器一般由J2ME中的监听器来实现。监听器是能够检测事件并且能够响应事件的代码。当一个用户与一个手机MIDlet程序交互的时候,事件就会产生,这个手机MIDlet程序就会响应这些事件。而监听器就是通过程序设计人员定义的特定函数来处理的。需要注意的是每个事件的处理总是在前一个事件处理完成以后程序才会接着
7、处理,这意味着事件不能够同时被处理,它们是串行处理的。在MIDP开发中,有以下几种处理事件的用户接口:v(1)高级别MIDP的API中抽象命令接口v(2)单个键的按下与放开的低级别事件接口v(3)Canvas类中的paint()函数调用v(4)Display类中的Runnable对象的run()函数,当callSerially()函数被调用的时候,run()函数被触发 4.2.2按钮、菜单编程基础按钮、菜单编程基础v在介绍事件开发之前首先了解基本的Command(命令)编程。Midlet的javax.Microedition.lcdui包提供了一个命令Command类,用来进行屏幕上按钮的相关
8、开发,Command对象既可以显示为一个与键盘特定键相关联的按钮,又可以作为屏幕菜单的一个菜单项。由于手机程序功能有限,因此并没有提供像Windwos程序一样的菜单控件,而是当屏幕需要显示多个按钮的时候,自动生成一个菜单供用户选择使用。v创建一个新的Command对象需要调用Command对象的构造函数,构造函数的的语法如v下所示:vnew Command(Labels,Type,Priority);按钮、菜单编程基础按钮、菜单编程基础v在介绍事件开发之前首先了解基本的Command(命令)编程。Midlet的javax.Microedition.lcdui包提供了一个命令Command类,用
9、来进行屏幕上按钮的相关开发,Command对象既可以显示为一个与键盘特定键相关联的按钮,又可以作为屏幕菜单的一个菜单项。由于手机程序功能有限,因此并没有提供像Windwos程序一样的菜单控件,而是当屏幕需要显示多个按钮的时候,自动生成一个菜单供用户选择使用。v创建一个新的Command对象需要调用Command对象的构造函数,构造函数的的语法如v下所示:vnew Command(Labels,Type,Priority);命令类型的重要指数命令类型的重要指数 v创建一个Command对象的时候,需要指定构造函数的3个参数,例如创建一个按钮标签名称为“Exit”的命令对象,指定了它的类型是“EX
10、IT”类型,具体代码如下所示:v/定义了一个Command控件变量v private Command exitCommand;v/创建一个新的Command对象v exitCommand1=new Command(“Exit”,Command.EXIT,1);添加按钮的方法添加按钮的方法v在程序的构造函数HelloWorld()中新添加一个“Command.BACK”属性的按钮,更改部分的代码如下所示。v1 private Command exitCommand,backCommandv2 private TextBox tb;v3 public HelloWorld()v /创建2个Comm
11、and对象v4 exitCommand=new Command(“Exit”,Command.EXIT,1);v5 backCommand=new Command(“Back”,Command.BACK,1);v6 tb=new TextBox(“Hello MIDlet”,“Hello,World!”,15,0);v7 tb.addCommand(exitCommand);v8 tb.addCommand(backCommand);v9 tb.setCommandListener(this);v10 v其中第1行代码添加了一个新的Command对象backCommand,第8行代码使用add
12、Command()函数把backCommand对象添加到TextBox屏幕对象中 添加按钮的方法添加按钮的方法v运行效果 添加按钮的方法添加按钮的方法v如果在原来的基础上再添加几个按钮,看看会出现什么样的效果?在“HelloWorld”程序中多添加2个Command对象的具体代码如下所示:v1 private Command exitCommand,backCommand,screenCommand1,screenCommand2;v2 private TextBox tb;v3 public HelloWorld()v /创建2个Command对象v4 exitCommand=new Com
13、mand(“Exit”,Command.EXIT,1);v5 backCommand=new Command(“Back”,Command.BACK,1);v6 screenCommand1=new Command(“Screen1”,Command.SCREEN,1);v7 screenCommand2=new Command(“Screen2”,Command.SCREEN,1);v8 tb=new TextBox(“Hello MIDlet”,“Hello,World!”,15,0);v9 tb.addCommand(backCommand);v10 tb.addCommand(exit
14、Command);v11 tb.addCommand(screenCommand1);v12 tb.addCommand(screenCommand2);v13 tb.setCommandListener(this);v14 添加按钮的方法添加按钮的方法v由于添加的2个按钮是Screen属性的按钮,而且手机使用习惯是在屏幕左右各只有一个按钮,所以添加多个按钮以后,程序将会自动显示一个Menu菜单按钮,在模拟器上单击Menu菜单,可以看到显示如图所示的3个菜单项,而“Exit按钮本来在程序代码中是最先添加的,现在被自动调整为第3项,也就是菜单中的最后一项。这些都是根据按钮的类型来自动调整的。由此
15、可见,如果需要显示菜单效果,只需要多添加几个按钮即可。处理高级别事件处理高级别事件v所谓的高级别事件,就是指在处理高级界面上的控件时候需要处理的事件。每一个高级界面的Dislayable对象都有一个相应监听器,该监听器用来监听控件是否已经被触发了相关的事件。本小节仅仅介绍Command对象的事件开发,其他控件的事件开发将结合相关小节的具体内容再进行详细介绍。v要处理按钮高级别事件,程序必须继承一个命令监听器接口类CommandListener类,具体操作如下所示:vpublic class HelloWorld extends MIDlet implements CommandListener
16、v 4.2.3处理高级别事件处理高级别事件v在一个MIDlet程序的开发中,如果继承了监听器接口类CommandListener类,所有的按钮事件都会触发事件,然后执行public void commandAction()函数的,通过这个函数可以处理几乎所有程序中的事件,当屏幕按钮被按下,就立刻执行commandAction()函数中相应的一系列的代码。实现触发了exitCommand命令对象以后,立刻关闭MIDlet程序的具体代码如下所示:v1 public void commandAction(Command c,Displayable d)v2 if(c=exitCommand)v3 t
17、ry/关闭程序v4 destroyApp(false);v5catch(MIDletStateChangeException exception)v6 System.out.println(“MIDletStateChangeException”);v7 v8 notifyDestroyed();v9 v10 处理高级别事件处理高级别事件v第1行代码指明了2个函数参数,其中参数Command表示当前被触发的按钮对象,参数d表示当前显示的屏幕对象。第2行代码判断到屏幕上触发的Command对象是exitCommand对象,则调用destroyApp(false)函数申请关闭程序,在关闭的过程中需
18、要释放所有资源并保存持久性数据,然后使用notifyDestroyed()函数通知系统立刻关闭该程序,让系统认为所有资源已经被回收了,然后可以安全地关闭程序了。4.2.4处理低级别事件处理低级别事件v低级别事件是指处理低级界面开发Canvas类的时候需要自己定义的按键作用所触发的相关事件。当一个键按下的时候,系统会返回相关的键代码,需要自己做这部分的代码进行事件处理,在低级界面设计一章将会详细介绍如何处理低级别事件。4.3基本屏幕控件基本屏幕控件v屏幕控件就是负责屏幕显示的控件,目前主要有4种,它们的API处理过程都是继承Screen类的,它们的名称和具体功能如下所示:vList:从指定的几个
19、列表种选取需要的选项vTextBox:用来输入文本vAlert:用来显示通知用户的一些文本和图像信息vForm:用来显示多个不同类型的控件,使它们显示在同一屏幕上 4.3.1TextBox vTextBox是可以允许用户编辑文本的屏幕对象。创建一个TextBox屏幕对象必须使用TextBox的构造函数,TextBox的构造函数如下所示:vTextBox(String title,String text,int maxSize,int constraints);v 其中参数title指定了TextBox的标题,参数text指定了TextBox的初始化内容,参数maxSize指定了TextBox允
20、许输入的最大字符数,如果输入超过最大数目的字符,则会抛出异常。参数constraints指定了TextBox输入内容的限制类型,即只能输入指定类型的字符。程序可以同时为每个TextBox设置它的输入限制,可以限制输入的字符串的类型。可以在创建TextBox对象的时候就设置constraints参数,constraints参数可以是如下的几种类型:v (1)ANY:允许输入任何文本v (2)EMAILADDR:允许输入一个Email地址v (3)NUMERIC:允许输入输入一个整数v (4)PHONENUMBER:允许输入一个电话号码v (5)URL:允许输入一个网络URL地址v (6)PASS
21、WORD:允许输入字符被*号代替的密码 4.3.2Listv一个屏幕可能包含有多个选择,每个选择都是由一个标题描述实际功能,MIDP提供了List屏幕类来进行处理这方面的要求。List屏幕类用来成列地显示数据,列表屏幕的表项通常包括图标和标题两部分,标题用来对具体的功能进行描述。List屏幕类的每一个类表项的功能就好像一个Command控件的功能,可以通过按下手机键盘的确定键(SELECT键)选择它们,同时List屏幕类触发相关的事件。v创建一个List屏幕类的对象可以使用的构造函数有两种,它们的具体定义如下所示:vList(String title,int listType);vList(S
22、tring title,int listType,String stringElements,Image imageElements);Listv创建一个List对象的代码如下所示:v1 List mainList;v2 String stringArray=/列表的标题组v “Textbox A”,v “Textbox B”,v “Textbox C”,v ;v3 mainList=new List(“List Example”,Choice.IMPLICIT,stringArray,null);v4 mainList.addCommand(exitCommand);v5 mainList.
23、addCommandListener(this);ListvList屏幕对象可以使用构造函数一次性的把所有列表选项都显示出来,也可以通过append()函数动态的向List添加新的列表项。例如在原来的列表基础上新添加2个列表项v的代码如下所示:vmainList.append(“Textbox D”,null);/List屏幕添加一个列表项v mainList.append(“Textbox E”,null);Listv如果需要在列表选项左边显示图片,则要指定图片数组,创建List的时候作为构造函数的第4个函数代入即可,如果不显示,则可以使用“null”为参数。创建一个图片数组的例子代码如下所
24、示:v1 Image imageArray=null;v2 tryv /指定png格式的图片的路径v3 Image icon=Image.createImage(“/Icon.png”);v4 imageArray=new Image/图像数组v icon,v icon,v iconv;v catch(java.io.IOException err)v5 imageArray=null;v 6 v 第3行代码指定了图片保存的路径“/Icon.png”,这个路径表示名称为“Icon.png”的图片是存放在程序所在项目的根目录下的。目前List屏幕对象支持的图片类型只能是“.png”格式的图片。L
25、istvMIDP2.0中,List的类型有以下3种表现方式:v1隐含方式隐含方式Choice.IMPLICITv 隐含方式是一种设置默认选项的模式,在一组列表选项中,只能选择其中的一个列表选项。v2单选方式单选方式Choice.EXClUSlVEv 单选方式就是在一组几个列表选项中,只能有一个列表选项被选择,但是在选项的左边出现一个圆形的单选框。v3多选方式多选方式Choice.MULTIPLEv 多选方式就是在一组几个列表选项中,可以有多个列表选项同时被选择,在列表选项的右边出现一个正方形的复选框,选择以后将会出现一个打勾符号。Listv下面的例子展现了如何显示一个带图标的隐含方式(Choi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手持 移动 设备 JME 应用 开发
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内