四章高级用户界面.ppt

上传人:本田雅阁 文档编号:3196872 上传时间:2019-07-29 格式:PPT 页数:51 大小:578.01KB
返回 下载 相关 举报
四章高级用户界面.ppt_第1页
第1页 / 共51页
四章高级用户界面.ppt_第2页
第2页 / 共51页
四章高级用户界面.ppt_第3页
第3页 / 共51页
四章高级用户界面.ppt_第4页
第4页 / 共51页
四章高级用户界面.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《四章高级用户界面.ppt》由会员分享,可在线阅读,更多相关《四章高级用户界面.ppt(51页珍藏版)》请在三一文库上搜索。

1、第四章 高级用户界面,2008-03,电子科技大学科园培训机构,本章主要内容,LCDUI包的体系结构 LCDUI事件机制 LCDUI的高级API,电子科技大学科园培训机构,LCDUI简介,为何用户界面不采用AWT或SWING AWT或SWING是针对桌面计算机的硬件条件做的优化,移动通信设备不适用。 AWT或SWING是针对使用鼠标作为输入方式的设备而设计的,但一般的移动通信设备没有鼠标。 AWT或SWING支持窗口管理功能,而移动通信设备上不需要。 AWT或SWING采用的消息处理机制会在程序执行时产生很多的Event对象,这样会给内存和处理能力有限的移动通信设备带来沉重的负担。,电子科技大

2、学科园培训机构,LCDUI简介,软硬件的交互方式 不同的移动通信设备在输入方式上可能会有所差异,但只要编写的是标准MIDlet应用程序,底层KVM都会自动调整对应的。,电子科技大学科园培训机构,LCDUI包的设计,LCDUI包分类 高级API(Screen的子类) 低级API(Canvas的子类与Graphics类) 注意 由于手机一次只能显示一个画面,因此每个画面只能在高级API和低级API之间择一使用。当然在可以在同一个MIDlet中混合使用。,电子科技大学科园培训机构,LCDUI包的设计,高级API 画面具有移植性 编写程序比较轻松 程序员对画面的掌控能力比较低 低级API 画面可移植性

3、比较低 编写程序相对复杂 程序员对画面有完全的掌控能力,电子科技大学科园培训机构,LCDUI包的体系,javax.microedition.lcdui.Displayable,Javax.microedition.lcdui.Canvas,javax.microedition.lcdui.Screen,电子科技大学科园培训机构,LCDUI包的具体结构,Display,CommandListener,Displayable,Ticker,Canvas,Screen,Graphics,Image,Font,1,1,1,Command,0n,电子科技大学科园培训机构,事件处理,MIDP中的事件处理机

4、制在J2ME用户图形界面开发中具有举足轻重的地位 用户与机器交互时会产生事件(event),MIDP应用程序根据事件来决定如何响应。 回调函数 MIDP中底层侦测到有事件产生时而调用的固定接口的方法,电子科技大学科园培训机构,事件处理,MIDP中和用户界面相关的回调函数 经由javax.microedition.lcdui.Command类 使用javax.microedition.lcdui.Canvas类 在屏幕需要重绘时,Canvas类的paint()方法被调用 调用Display类的callSerially()的方法时,会传入一个实现Runnable接口的类,其中的run()方法会被调

5、用 上述所有与用户界面相关的回调函数都是顺序执行的,它们由同一个线程控制,不会并行执行。,电子科技大学科园培训机构,Command类,javax.microedition.lcdui.Command 作用:类似于一般应用程序的系统菜单项 Command类适用于高级API和低级API,电子科技大学科园培训机构,Command类,示例程序,定义Command,添加Command到Displayable类的子类对象里面,移除Command,电子科技大学科园培训机构,Command类,执行结果,电子科技大学科园培训机构,Command类构造函数,三个参数的构造函数 Command c1 = new C

6、ommand(“Back_1”, Command.Back, 2) “Back_1” : 显示在画面上的名称 Command.Back : 命令类型 2 : 优先权,号码越低优先权越高,优先权越高代表用户越容易找到它 四个参数的构造函数 Command c1 = new Command(“短命令”, “长命令” , Command.Back, 2),电子科技大学科园培训机构,Command类构造函数,Command的类型 Command.BACK Command.CANCEL Command.EXIT Command.Help Command.ITEM Command.OK Command.S

7、CREEN Command.STOP Command并不会因为设定成某一种类型就具有该类型“名称上”的功能,电子科技大学科园培训机构,CommandListener,Command必须和CommandListener事件处理接口一起使用才能反应用户的动作。 高级和低级API中都能使用事件处理接口,电子科技大学科园培训机构,CommandListener,Displayable,Displayable 的子类,实现了 CommandListener 接口的类,CommandListener,1.注册: SetCommandListener(),3.通知: commandAction(),2.用户

8、选定,这种向事件来源注册,然后等候通知的事件处理模型在java中称为委托模型(Delegation Model),电子科技大学科园培训机构,CommandListener,示例,必须要实现接口中的commandAction抽象方法,注册,实现了CommandListener接口,电子科技大学科园培训机构,CommandListener,commandAction方法 public void commandAction(Command c, Displayable s) 其中的参数: c : 被选定的系统菜单项的引用 s : 发生事件的来源,也就是包含了Command对象的Form对象的实体,在

9、这里被上转型为Displayable接口。,电子科技大学科园培训机构,Ticker,Ticker类的作用 类似于跑马灯的类 Ticker的使用 所有Displayable类的子类都可以加入Ticker。 用Displayable中的setTicker()设定画面上的Ticker 用Displayable中的getTicker()取得画面内含的Ticker对象,电子科技大学科园培训机构,Ticker,示例:,电子科技大学科园培训机构,Ticker,执行结果 开始: 停止:,电子科技大学科园培训机构,Displayable类,Displayable类作用 Displayable类是一个抽象类,只要

10、是它的子类,都具有能显示在屏幕上的能力 Displayable类的重要方法 getTicker() : 取得跑马灯 setTicker() : 设置跑马灯 getWidth() : 取得应用程序区宽度 getHeight() : 取得应用程序区高度,电子科技大学科园培训机构,Screen类及其体系,Screen类体系,screen,TextBox,Alert,Form,List,AlertType,Gauge,Font,Choice,电子科技大学科园培训机构,Screen类及其体系,Screen分类 Alert、List、TextBox:封装了比较复杂用户界面的类事先定义好了用户界面组件结构,

11、只能单纯拿来使用。 Form:缺省没有任何用户界面的组件,可以容纳Item类的子类的容器,以构成更复杂的图形用户界面。,电子科技大学科园培训机构,List类,分类 Choice.Exclusive:单选 Choice.MULTIPLE:多选 Choice.IMPLICIT:简易式的单选,电子科技大学科园培训机构,单选类型的List,例如: List l = new List(“List 测试”, Choice.EXCLUSIVE); l.append(“香蕉”, null); l.append(“苹果”, img); l.append(“西瓜”, null);,关于Image 使用Image之

12、前,必须使用Image.createImage(图形位置)将图片加载,图片文件放到res目录中。要使用绝对路径”/”做开头,在编译及测试时期,绝对路径”/”代表的就是res的位置。在执行时期,代表JAR文件里头的根目录。,电子科技大学科园培训机构,单选类型的第二种构造函数 List l = new List(“List 测试”, Choice.EXCLUSIVE, stringArray, imageArray); StringArray : 字符串数组,各个选项的名称 imageArray : 各个选项的图标,传入NULL即为不显示图标,单选类型的List,电子科技大学科园培训机构,单选类型

13、的List,几个关键的方法 单选类型的List并不会在用户选择之后立即引发事件。 getSelectedIndex(int arg) 取到目前被选取的项目的索引值。 getString(int arg)取得目前被选取的项目的内容名称。,电子科技大学科园培训机构,多选类型的List,例如: List l = new List(“List 测试”, Choice.MULTIPLE); l.append(“香蕉”, null); l.append(“苹果”, null); l.append(“西瓜”, null);,选择后的处理事件与Command连用,电子科技大学科园培训机构,多选类型的List,

14、一些重要方法 size() List中有多少选项 isSelected(int args) 判断某个项目是否被选中 getSelectedFlags(boolean args) 传入一个boolean数组,如果某选项被选中则相应标号的数组元素在方法调用后为true,否则为false,电子科技大学科园培训机构,简易式单选类型的List,构造函数的第二个参数改为Choice.IMPLICIT,电子科技大学科园培训机构,简易式单选类型的List,事件触发 Choice.IMPLICIT类型的List会在用户选择之后立刻引发事件,并将List.SELECT_COMMAND通过commandAction

15、()函数的第一个参数传入 public void commandAction(Command c, Displayable s) / ,电子科技大学科园培训机构,简易式的List的setSelectCommand()可以给定另外一个Command对象作为参数,代表往后IMPLICIT类型的List被用户选择之后,传递commandAction()作为第一个参数的对象 Command c1 = new Command(“按下”, Command.OK, 1); l.setSelectCommand(c1); public void CommandAction(Command c, Display

16、ble s) ,C1作为第一个参数,简易式单选类型的List,电子科技大学科园培训机构,Fit Policy机制,如果list中的某项内容字数太多以致于屏幕上不能一行显示完,MIDlet会怎么处理呢? list.setFitPolicy(Choice.TEXT_WRAP_ON) 过长的文字会自动编排到下一行 list.setFitPolicy(Choice.TEXT_WRAP_OFF) 过长的文字会自动被截断 list.setFitPolicy(Choice.TEXT_WRAP_DEFAULT) 根据厂家默认来选择,电子科技大学科园培训机构,Fit Policy机制,效果:,TEXT_WRAP

17、_ON,TEXT_WRAP_OFF,电子科技大学科园培训机构,TextBox类,TextBox构造函数 public TextBox(String title, String text, int maxSize, int Constraints) title:TextBox标题 text:TextBox的初始内容 maxSize:允许输入的字符的最大长度。不能超过设备本身所限制的最大值 Constraints:限制类型,电子科技大学科园培训机构,TextBox类,异常:IllegalArgumentationException 如果maxSize为零或负数 如果Constraints非法 如果

18、text与指定的Constraints不符 如果text长度超过maxSize,电子科技大学科园培训机构,TextBox类,主要的方法 setString/getString:设定或取出TextBox的内容 size:目前TextBox中的内容的字节数 delete:清空TextBox中的内容 getCaretPosition:获取输入光标的位置 insert:在特定位置加入内容,电子科技大学科园培训机构,TextBox类,Constraints 限制类型 TextField.ANY 允许输入任何字符或数字(Constant 0) TextField.EmailADD 允许输入电子邮件地址(C

19、onstant 1) TextFiled.NUMERIC 只允许输入数字(Constant 2),电子科技大学科园培训机构,TextBox类,TextFiled.PHONENUMBER 只允许用户输入电话号码格式(如果使用这个类型的TextBox,它会与设备上的拨号程序连接,用户输入电话后就可以直接拨号。Constant 3) TextFiled.URL 允许用户输入URL形式的字符串(Constant 4) TextField.DECIMAL 允许用户输入小数,比如”-123”,”0.123”, “.5”(Constant 5),电子科技大学科园培训机构,TextBox类,TextField

20、.PASSWORD TextBox中输入的是涉密信息,显示以星号代替(constant 0x10000) TextField.UNEDITABLE 用户目前不能进行输入操作(Constant 0x20000) TextField.SENSITIVE 代表这个输入的内容铭感,系统不该将它存起来,即不使用系统的自动保存功能(Constant 0x40000),电子科技大学科园培训机构,TextBox类,TextField.NON_PREDICTIVE 有些设备的输入发具有预测输入功能,使用此限制类型,代表屏蔽该设备的预测输入功能(Constant 0x80000) TextField.INITIA

21、L_CAP_WORD 输入英文时,自动将每个空格后的单词首字母大写(Constant 0x10000) TextField.INITIAL_CAPS_SENTENCE 在输入英文时,自动将每一个句子的首字母大写,电子科技大学科园培训机构,TextBox类,只要是不互斥的限制,都可以和其他限制以或(OR)运算符(|)连接在一起使用。 getConstraints() 获得目前状态下有的限制类型,得到返回值后和TextField.CONSTRAINT_MASK作位运算即可,电子科技大学科园培训机构,AlertType类,简介 AlertType是一个工具类,本身无法实例化,用以辅助Alert类的使

22、用。 几种Alert Type ALARM:警报 CONFIRMATION:确定 ERROR:错误 INFO:提供信息 WARNING:警告,电子科技大学科园培训机构,Alert类,Alert类的作用 用于通过屏幕向用户显示有关异常情况或错误的信息 显示Alert 调用Display类的setCurrent()方法 Alert的作用模式 无模式的Alert 有模式的Alert,电子科技大学科园培训机构,Alert类,无模式的Alert Alert显示一定时间后自动回返之前的画面 怎样实现无模式的Alert 使用Display两个参数的setCurrent()方法 Alert al = new

23、Alert(“应用程序开始启动”); al.setType(AlertType.INFO); al.setTimeout(5000); al.setString(“应用程序初始化中,请稍等”); Form f = new Form(“主画面”); Display.setCurrent(al, f);,电子科技大学科园培训机构,Alert类,运行结果: 在父窗口调用setCurrent()方法显示Alert对象,五秒钟后,电子科技大学科园培训机构,Alert类,有模式的Alert Alert一直显示,直到用户显示地释放它为止 利用Alert类的setTimeout()函数,并传入Alert.FO

24、REVER作为参数 用户需触发默认事件或用户自定义事件返回 DISMISS_COMMAND Alert的静态成员变量,没有自定义Command时使用 加入自定义Command时,DISMISS_COMMAND不再出现,电子科技大学科园培训机构,Alert类,Alert的Timeout被自动设定为FOREVER的情况 如果Alert里出现了两个以上的Command 如果Alert里只出现了一个Command,且定义了事件处理函数 用户自定义Command 任何对Alert事件有兴趣的类可以利用setCommandListener()对其进行注册动作,回家作业,设计一个对话框程序 主界面,主界面上有“退出”按钮 点击“退出”,显示确认对话框 对话框有两个按钮:取消和确认 确认:退出系统 取消:返回主界面,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1