MIDP高级界面编程.ppt

上传人:sh****n 文档编号:8621565 上传时间:2020-03-30 格式:PPT 页数:101 大小:667.81KB
返回 下载 相关 举报
MIDP高级界面编程.ppt_第1页
第1页 / 共101页
MIDP高级界面编程.ppt_第2页
第2页 / 共101页
MIDP高级界面编程.ppt_第3页
第3页 / 共101页
点击查看更多>>
资源描述
第6章MIDP高级界面编程 郝玉龙E mail haoyulongsd J2ME移动应用开发 电子讲义 6 1LCDUI体系结构概述6 2高级用户界面编程基础6 3Command处理机制6 4Screen对象6 5List组件6 6TextBox组件6 7Alert组件6 8Form类小结 6 1LCDUI体系结构概述 为适应种类繁多的移动信息设备 CLDC本身没有定义任何GUI功能 而是由J2ME将所有与界面相关的类库都定义在简表 例如MIDP 中 这样在更大程度上包含了保证了界面类库的适应性 6 1 1LCDUI工作模型 第一步 为了在MIDP设备上显示信息 需要取得设备的显示屏幕 Display对象代表的是移动设备显示屏幕 每个MIDlet都有且仅有Display对象的一个实例 Display对象实质上是设备显示屏的管理程序 它控制在设备上显示什么内容 在J2ME程序中只有一个Display的引用 通过静态方法Display getDisplay MIDletmidlet 得到 第二步 通过Display的引用程序开发人员可以得到当前设备屏幕的一些信息 比如色彩之类 但是最常用的方法是通过Display的setCurrent 方法将抽象屏幕对象绑定到当前设备屏幕上来显示 图形用户界面开发中更多的工作是实现抽象屏幕对象 由抽象屏幕对象封装和管理实现程序与用户之间交互的图形界面组件如文本框 选择框列表等 当使用高级图形API时 抽象屏幕由javax microedition lcdui Screen对象代表 当使用低级屏幕API时 抽象屏幕由javax microedition lcdui canvas对象代表 应用程序可以包含几个抽象屏幕对象 不过某一时间只能在显示器上显示一个屏幕 或者说只有一个当前屏幕 图6 1LCDUI体系结构 图6 1LCDUI体系结构 为了实现可移植性 高层API进行了高度抽象 在界面外观上提供的控制很少 例如 不允许定义高层组件的视觉外观 形状 颜色或字体 与组件之间的大多数交互都被实现封装 即由底层实现而不是应用程序完成对设备硬件和本地用户界面类型的适应工作 因此 如果使用高级API 那么用户界面就具有较高移植性 但是高级API提供的组件都会由底层的虚拟机直接映射到该设备的本地用户界面 所以程序开发人员无法决定最终显示到设备屏幕上时组件的颜色 字型和外观 因为这些细节都是由系统决定 程序开发人员对画面的控制程度相对较低 另外 采用高级API开发的用户界面 与用户的交互都会遵循该移动设备既有用户界面的操作方式 所以 采用高级用户界面开发的应用 如果发布到不同类型的移动设备上 用户界面的外观和交互方式出现一些差异是很正常的 使用低级API开发应用就相对复杂 低层API提供很少的抽象 使用它们的应用程序需要精确地布局和控制图形元素 同时还需要访问低层输入事件 使用低级API时 将对移动设备的显示屏幕具有完全的控制权 同时也能够决定用户该如何与程序交互 因此程序开发人员考虑的细节就比较多 由于每种设备都有不同的特性 不同的操作方式 颜色和大小 因此一旦采取低级API 程序的可移植性将大大降低 将不再保证程序可以在不同的机器上执行 6 2高级用户界面编程基础 6 2 1Display对象MIDP使用Display对象进行用户界面的管理 负责与应用程序管理器进行交互 Display代表了系统显示屏和输入设备的管理器 包含用来获取设备属性的方法 以及请求在设备上显示抽象屏幕对象的方法 表6 1Display对象常用方法 程序6 1 DisplayTest javapackagechap6 importjavax microedition lcdui Display importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassDisplayTestextendsMIDlet Displaydisplay null publicDisplayTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this intcolors display numColors booleaniscolor display isColor booleans display flashBacklight 2500 if s System out println 您的设备不支持背景灯控制 s display vibrate 500 if s System out println 您的设备不支持震动 if iscolor System out println 您的设备是彩色显示设备 elseSystem out println 您的设备不是彩色显示设备 System out println 您的设备支持 Integer toString colors 种颜色 protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 6 2 2Displayable对象 在显示屏设备上显示的用户界面对象为Displayable对象 在同一时刻应用程序最多只能有一个Displayable对象 这个Displayable对象显示在显示屏设备上 并通过它与用户进行交互 这个被引用的Displayable对象被称为当前Displayable对象 从图6 1可知 所有的GUI组件都实现了抽象类Displayable 程序6 2 DisplayableTest javapackagechap6 importjavax microedition lcdui Display importjavax microedition lcdui Form importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassDisplayableTestextendsMIDlet Displaydisplay null Formf publicDisplayableTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this f newForm Displayable测试 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 6 2 3Ticker对象 Ticker对象实现了在屏幕上连续滚动的滚动条或小段文本 Ticker与在本节讨论的其他组件有一些不同 它不是Screen的子类 相反 它是在Displayable类中定义的一个变量 因此 所有从Displayable派生出的对象都可以显示一个Ticker 因此Ticker既可以使用在高级用户界面API中 也可以使用在低级用户界面API中 程序6 3TickerTest javaimportjavax microedition lcdui Display importjavax microedition lcdui Form importjavax microedition lcdui Ticker importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassTickerTestextendsMIDlet Displaydisplay null Formf publicTickerTest super f newForm Ticker测试 protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this f setTicker newTicker 你好 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 6 3Command处理机制 MIDP定义了抽象的Command机制来实现与设备的命令交互接口 而具体的实现根据与该设备相适合的机制来提供支持 对于开发者来说 Command对象就类似于普通GUI编程的button 可以设定其标题 如确定 取消等 当用户调用该Command时 应用程序会做出适当的响应 而具体Command如何在屏幕上显示以及如何与具体设备的按键等建立联系是MIDP实现的责任 开发者不需要考虑Command既适用于高级API Screen类 又适用于低级API Canvas类 Command类有两种构造函数 一个有三个参数 另一个则是四个参数 区别在于 前者第一个参数是显示在画面上名称 第二个参数是命令的类型 第三参数是优先权 以自然数形式表示 如 1 2 3 越小优先权越高 代表Command将在屏幕越显眼的地方显示 而后者则是在前者的基础上增加了一个长命令的参数 具体位置位于前者第一和第二个参数之间 Command的类型共分为8种 Command BACK ommand EXIT Command CANCEL Command HELP Command ITEM Command OK Command SCREEN Command STOP 程序6 4 CommandTest javaimportjavax microedition lcdui Command importjavax microedition lcdui Display importjavax microedition lcdui Form importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassCommandTestextendsMIDlet privateDisplaydisplay publicCommandTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Formf newForm Command测试 Commandc1 newCommand Comm 1 Command BACK 2 Commandc2 newCommand Comm 2 Command BACK 1 f addCommand c1 f addCommand c2 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 程序6 5 CommandTest2 javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassCommandTest2extendsMIDlet privateDisplaydisplay publicCommandTest2 super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Formf newForm Command测试 Commandc1 newCommand 启动 启动应用程序 Command BACK 1 Commandc2 newCommand 退出 退出应用程序 Command OK 2 f addCommand c1 f addCommand c2 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 在屏幕上仅仅显示出这些Command是没有任何意义的 程序开发人员必须还要将Command类和底层的事件处理方法关联起来 这样才能响应用户的操作 类Command对 个用户动作的语义信息进行封装 而命令动作的行为没有封装进这个对象 也就是说命令只包含了 命令 描述信息 而不是命令被激活时所实际发生的动作 命令的动作在Displayable对象实例所绑定的接口CommandListener中定义 Command的事件处理模式采取的是标准的Listener模式 需要使用Displayable对象的setCommandListener 方法来注册Command的Listener 方法如下 publicvoidsetCommandListener CommandListenerl 用Command对象实现用户交互的基本步骤如下所示 创建一个Command对象 将这个Command添加到Form TextBox List或者Canvas上 创建一个Command监听器 它必须实现CommandListener接口 通过调用setCommandListener CommandListenerl 方法将监听器注册到UI组件 当用户与UI组件交互 MIDP实现触发Command命令 注册到UI组件的监听器调用commandAction 方法来对Command命令作出响应 用这个方法可以确定是哪一条命令生成了这个事件并对它进行相应处理 程序6 6 CommandTicker javaimportjavax microedition lcdui Command importjavax microedition lcdui CommandListener importjavax microedition lcdui Display importjavax microedition lcdui Displayable importjavax microedition lcdui Form importjavax microedition lcdui Ticker importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassCommandTickerextendsMIDletimplementsCommandListener privateDisplaydisplay privateFormf publicCommandTicker super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this f newForm Ticker测试 Commandstart newCommand 开始 Command OK 1 Commandstop newCommand 退出 Command EXIT 1 f addCommand start f addCommand stop f setCommandListener this display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables Stringcmd c getLabel if cmd equals 开始 f setTicker newTicker 运行中 elseif cmd equals 退出 f setTicker null 6 4Screen对象 所有的高级用户界面组件都是基于Screen类 Screen是一个封装了设备相关图形用户输入接口的对象 然而 Screen仅是一个有其自身一些功能的抽象类 每个Screen有两个属性 标题和ticker 标题是显示在screen内容之上的一个字符串 在实际的应用开发过程中 一般不直接使用Screen对象 而是使用Screen的4个直接子类 TextBox List Alert和Form 其中Alert List和TextBox代表一个完整的抽象屏幕 它们不能有父容器的 必须要独占屏幕 6 5List组件 6 5 1Choice接口接口javax microedition lcdui choice定义了这样一个用户界面组件的API 实现了从预定义的数个选项中进行选择 Choice的内容由字符串表示 也可用图像表示 表6 2Choice接口的主要字段和方法 Choice对象可以分为3大类 单选类型 每次必须选中一个元素且只能选中一个元素简易类型 同单选类型一样 每次必须选中一个元素且只能选中一个元素 并且用户在不同的元素间切换选项时 会自动触发一个Command命令 多选类型 用户可在显示的一系列元素间选择任意数量的元素 程序6 7 ExclusiveList javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassExclusiveListextendsMIDletimplementsCommandListener privateDisplaydisplay publicExclusiveList super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Listl newList List测试 Choice EXCLUSIVE l append 语文 null l append 数学 null l append 英语 null l setSelectedIndex 1 true l addCommand newCommand 确定 Command OK 1 l setCommandListener this display setCurrent l protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables Stringcmd c getLabel if cmd equals 确定 Listl List s inti l getSelectedIndex System out println 您选择了第 i 个选项 Stringcon l getString i System out println 选项的名称为 con 程序6 8 ExclusiveImageList javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassExclusiveImageListextendsMIDletimplementsCommandListener privateDisplaydisplay publicExclusiveImageList super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Imageimg null try img Image createImage ok png catch Exceptione System out println e Listl newList List测试 Choice EXCLUSIVE l append 语文 img l append 数学 img l append 英语 img l addCommand newCommand 确定 Command OK 1 l setCommandListener this display setCurrent l protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables Stringcmd c getLabel if cmd equals 确定 Listl List s inti l getSelectedIndex System out println 您选择了第 i 个选项 Stringcon l getString i System out println 选项的名称为 con 程序6 9 ImplicitList javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassImplicitListextendsMIDletimplementsCommandListener privateDisplaydisplay publicImplicitList super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Listl newList List测试 Choice IMPLICIT l append 语文 null l append 数学 null l append 英语 null l addCommand newCommand 确定 Command OK 1 l setCommandListener this display setCurrent l protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables if c List SELECT COMMAND Listtmp List s intselected tmp getSelectedIndex System out println 第 selected 个选项被选择 else Stringcmd c getLabel if cmd equals 确定 Listl List s inti l getSelectedIndex System out println 第 i 个选项被确认 Stringcon l getString i System out println 内容为 con 程序6 11 MultipleList javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassMultipleListextendsMIDletimplementsCommandListener privateDisplaydisplay publicMultipleList super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Listl newList List测试 Choice MULTIPLE l append 语文 null l append 数学 null l append 英语 null l setSelectedIndex 1 true l addCommand newCommand 确定 Command OK 1 l setCommandListener this display setCurrent l protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables Stringcmd c getLabel if cmd equals 确定 Listl List s intsize l size for inti 0 i size i if l isSelected i System out println 第 i 个选项被选择 6 6TextBox组件 TextBox对象是一个允许用户输入和编辑文本的screen 可以通过指定四个参数给TextBox的构造器来创建一个TextBox对象 publicTextBox Stringtitle Stringtext intmaxSize intconstraints title被复用作该screen的标题 参数text和maxSize用于指定初始 缺省的 文本和该文本框的最大尺寸 最后 constraints参数可用于限制用户的输入 Constraints取值为TextBox类的静态常整型常量 由TextField和TextBox类共享使用 限制区分类型分为2类 一类是限制TextBox所能存储的内容 表6 3TextBox的内容限制类型 表6 4TextBox的系统属性限制类型 表6 5TextBox对象的主要方法 程序6 13 TextBoxTest javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassTextBoxTestextendsMIDletimplementsCommandListener privateDisplaydisplay publicTextBoxTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this TextBoxtb newTextBox TextBox测试 10 TextField ANY intmaxsize tb getMaxSize System out println 最大长度 maxsize tb addCommand newCommand 确定 Command OK 1 tb setCommandListener this display setCurrent tb protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Displayables Stringcmd c getLabel if cmd equals 确定 TextBoxtb TextBox s System out println 内容为 tb getString System out println 长度为 tb size 6 7Alert组件 一个Alert是一个显示文本和图像的普通的screen 它通知用户出错及另外一些异常信息 一个Alert可以是模式的 也可以是定时的 一个模式的Alert在用户取消它之前一直停留在屏幕上 之后 它可能回到显示它之前的屏幕状态 或者转到一个由应用程序特别选择的屏幕 当程序要求用户作出选择时 这是很有用的 如 程序可能显示信息如 Areyousure 并给出选项 Yes 和 No 一个定时的Alert将被持续显示指定 一般为几秒钟 的时间 在显示一条用户可能还不了解的信息时 这是很有用的 例如 当发送信息成功后显示的 成功发送短信息 的提示 注意 MIDP实现会自动提供一种方法以取消一个模式的Alert 如 在Sun的实现中 它提供了一个映射到软按钮的Done命令 表6 6Alert对象的主要方法 程序6 14 AlertTest javaimportjavax microedition lcdui Alert importjavax microedition lcdui AlertType importjavax microedition lcdui Display importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassAlertTestextendsMIDlet privateDisplaydisplay publicAlertTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Alertal newAlert 测试 al setType AlertType ALARM intdt al getDefaultTimeout System out println 默认显示时间 dt al setTimeout Alert FOREVER al setTimeout 10000 al setString 这是一个Alert窗口 display setCurrent al protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 程序6 15 ImageAlert javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassImageAlertextendsMIDlet privateDisplaydisplay publicImageAlert super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Alertal newAlert 图像Alert测试 al setType AlertType INFO al setTimeout Alert FOREVER try Imageimg Image createImage redball png al setImage img catch Exceptione System out println e toString al setString 这是一个图像Alert窗口 display setCurrent al protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 程序6 16 commandAlert1 javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclasscommandAlert1extendsMIDlet privateDisplaydisplay publiccommandAlert1 super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Alertal newAlert 带有Command的Alert al setType AlertType INFO al setTimeout 10000 Commandok newCommand 确定 Command OK 1 al addCommand ok display setCurrent al protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 6 8Form类 Form类和前面提到的A1ert List TextBox类一样 都是Screen类的直接子类 但Form是特殊的屏幕对象 它本身不提供能够与用户直接交互的用户界面 而是作为一个容器 容纳其它的可视组件 这些组件被称作表单元素 都是Item类的子类 Item类是表单元素对象通用属性或方法的一个集合 Form类提供了一个方法对表单元素进行编辑 如添加 删除等 或者获取表单元素的引用 从而直接对它的内容操作 表6 7Form类的主要方法 MIDP实现负责整个Form的布局和元素切换以及滚动 包含在表单中的任何组件都没有滚动机制 而是跟整个内容一起滚动 Form表单可以包含以下类型的Item组件 StringItem ImageItem Spacer DateField Gauge CustomItem TextField和ChoiceGroup 另外MIDP还支持开发自定义组件 这些组件集中在Form中 来提供复杂的用户交互界面 6 8 1StringItemStringItem的作用就是在屏幕上显示一串文字信息 并配合不同的外观类型 StringItem有两个构造函数 如下所示 StringItem Stringlabel Stringtext StringItem Stringlabel Stringtext intappearanceMode 程序6 19 StringItemTest javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassStringItemTestextendsMIDlet privateDisplaydisplay publicStringItemTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Formf newForm StringItem测试 StringItemsi1 newStringItem 测试1 普通外观的文本 Item PLAIN StringItemsi2 newStringItem 测试2 按钮外观的文本 Item BUTTON StringItemsi3 newStringItem 测试3 超链接外观的文本 Item HYPERLINK intl1 f append si1 intl2 f append si2 intl3 f append si3 System out println 第一个字符串对象的索引为 l1 System out println 第二个字符串对象的索引为 l2 System out println 第三个字符串对象的索引为 l3 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException 6 8 2Item组件的命令处理机制 Item虽然并不是继承Displayable 但是它仍旧可以像Displayable的子类如List Alert一样来通过addCommand removeCommand来添加或删除命令选项 对于任意的Item组件对象 它必须有以下元素 1个Command数组 它包含关联到此Item对象上的所有Command命令 可以通过addCommand removeCommand来添加或删除Command选项 1个defaultCommand变量 它指向Command数组中的一个Command 可以通过setDefaultCommand 方法来设置defaultCommand变量的值 如果调用setDefaultCommand null 则设置defaultCommand变量的值为null 1个ItemCommandListener的引用 代表注册到此Item对象的命令监听器 程序6 21 StringItemCommandTest javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassStringItemCommandTestextendsMIDletimplementsItemCommandListener privateDisplaydisplay publicStringItemCommandTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Formf newForm ItemCommand测试 StringItemsi1 newStringItem 人事部 负责人事管理 Item PLAIN StringItemsi2 newStringItem 市场部 负责市场营销 Item BUTTON si2 addCommand newCommand 进入 Command OK 1 si2 addCommand newCommand 退出 Command CANCEL 1 si2 setItemCommandListener this StringItemsi3 newStringItem 财务部 负责财务营销 Item HYPERLINK si3 addCommand newCommand 借款 Command ITEM 1 si3 addCommand newCommand 报销 Command ITEM 1 si3 setItemCommandListener this f append si1 f append si2 f append si3 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Itemi System out println 当前UI组件标题 i getLabel System out println 当前命令选项标题 c getLabel 程序6 22 defaultCommandTest javaimportjavax microedition lcdui importjavax microedition midlet MIDlet importjavax microedition midlet MIDletStateChangeException publicclassdefaultCommandTestextendsMIDletimplementsItemCommandListener privateDisplaydisplay publicdefaultCommandTest super protectedvoidstartApp throwsMIDletStateChangeException display Display getDisplay this Formf newForm DefaultItemCommand测试 StringItemsi1 newStringItem 人事部 负责人事管理 Item PLAIN StringItemsi2 newStringItem 市场部 负责市场营销 Item BUTTON si2 addCommand newCommand 进入 Command ITEM 1 si2 setDefaultCommand newCommand 退出 Command ITEM 1 si2 setItemCommandListener this f append si1 f append si2 display setCurrent f protectedvoidpauseApp protectedvoiddestroyApp booleanarg0 throwsMIDletStateChangeException publicvoidcommandAction Commandc Itemi System out println 当前UI组件标题 i getLabel System out println 当前命令选项标题 c getLabel 6 8 3ImageItem组件 MIDP中有两个类用于处理显示图像 Image和ImageItem Image用于创建一个图像对象并包含图像高度和宽度 以及图像是否可变等图像描述信息 ImageItem定义了如何显示一个图像 即图像是否对中 靠左 在屏幕上方等 MIDP提供了两种图像 不可变的和可变的 一个不可变图像在创建后不能再改变 通常 这种图像是从像文件这样的资源中读取的 一个可变图像实质上是一块内存 通过将图像内容写进这个内存块而创建它 程序6 23 ShowImageItem javaimportjavax microedition lcdui importjavax microedition midlet MIDlet publicclassShowImageItemextendsMIDletimplementsCommandListener privateDisplaydisplay privateFormprops privateImageimg privateImageItemimgItem privateCommandexitCommand newCommand Exit Command EXIT 1 publicShowImageItem display Display getDisplay this publicvoidstartApp props newForm ImageItem测试 try img Image createImage redball png imgItem newImageItem DefaultLayout img ImageItem LAYOUT DEFAULT ImageCannotbeshown props append imgItem props append newImageItem LeftLayout img ImageItem LAYOUT LEFT ImageCannotbeshown props append newImageItem CenterLayout img ImageItem LAYOUT CENTER ImageCannotbeshown catch Exceptionfe props addCommand exitCommand props setCommandListener this display setCurrent props publicvoidcommandAction Commandc Displayables if c exitCommand destroyApp false notifyDestroyed publicvoiddestroyApp booleanunconditional publicvoidpauseApp display setCurrent null props null 6 8 4TextField组件 Textfield用来接收文本输入 组件可以指定标签 最大字符数以及所接受的数据类型 TextField组件还实现了在输入密码等敏感信息时的屏蔽功能 TextField的构造函数如下所示 TextField Stringlabel Stringtext intmaxSize intconstraints 其中 第一个参数是文本框的名称 第二个参数是文本框内的文字内容的缺省值 第三个参数是输入文本的最大限制长度 最后一个参数constraints 它指定在TextField中允许的输入类型 MIDP为TextField组件定义了以下约束参数 ANY允许所有字符 EMAILADDR只允许有效的电子邮件地址 NUMERIC允许所有数字值 PHONENUMBER只允许电话号码 URL只允许在URL中有效的字符 PASSWORD在输入时屏蔽所有字符注意 TextField和TextBox在功能上很类似 不过TextBox是
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!