- 浏览: 203198 次
- 性别:
- 来自: 湖南
文章分类
最新评论
高级界面开发
1:基本界面和CommandCommand
CLDC(1.1):java.io---标准JavaIO包,J2SEIO包的子集
java.lang——核心语言包,J2SE核心语言包的子集
java.util——工具包
javax.microedition.io——CLDC通用连接框架类和接口。
MIDP(2.0+)
javax.microedition.midlet——MIDlet类包, 只包含一个MIDlet类可作为所有MIDlet的父类
javax.microedition.lcdui——界面类包,对GUI组件提供支持,
javax.microedition.rms——记录管理系统,支持数据库系统的不同类和接口,它们随后存储和检索MIDlet所用的数据 javax.microedition.lcdui.game——Game API,MIDP2.0游戏编程扩展
javax.microedition.media——多媒体类包
javax.microedition.media.control——多媒体控制类包
javax.microedition.pki——数字签名类包
另外还有javax.microedition.io包中的一部分类。
创建第一个MIDlet
MIDlet(Mobile Information Devices let):手机上运行的J2ME应用程序,即移动信息设备小程序。以后我们编写的就是MIDlet
用Eclipse创建第一个MIDlet
MIDlet在应用中可能存在的状态:
运行(Active)状态—程序正在运行中;
暂停(Paused)状态
调用notifyPaused( )函数,MIDlet立刻进入此状态;
MIDlet持有的所有资源暂时被释放,但它随时可能被运行;
销毁(Destroyed)状态
调用notifyDestroyed( )函数,MIDlet立刻进入此状态;
MIDlet被永久地关闭并且释放占用的所有资源,等待着废物清理程序的处理。
运行,打包
配置文件:MANIFEST
用来描述MIDletSuite的配置,如:名称、版本、开发商等;MANIFEST 文件为纯文本文件,文件扩展名为.mf.
MANIFEST 必须包含以下属性:
MIDlet-Name—MIDletSuite 的名称
MIDlet-Version—MIDletSuite 的版本号,格式为主版本.次版本.微版本,例如0.0.0,这也是版本号的默认值。版本号主要用于安装或升级。
MIDlet-Vendor —MIDletSuite 的提供商
JAD属性的说明
JAD 描述文件为纯文本文件,文件扩展名为.jad;说明具体的运行配置,以及Jar文件所在的位置的信息
JAD 描述文件必须提供如下属性:
MIDlet-Name—略
MIDlet-Version—略
MIDlet-Vendor—略
MIDlet-Jar-URL—下载该MIDletSuite 的URL 地址。虽然这里可以使用绝对位置或相对位置,但还是建议用绝对位置。
MIDlet-Jar-Size—JAR 文件的大小,计算单位为字节。
精解Display和Displayable
Display的其他作用
获取设备支持的颜色: numColors()
是否支持彩色:isColor()
背景颜色,前景颜色:COLOR_BACKGROUND ,COLOR_FOREGROUND
边框颜色,高亮边框色:COLOR_BORDER , COLOR_HIGHLIGHTED_BORDER
高亮背景色,高亮前景色:COLOR_HIGHLIGHTED_BACKGROUND , COLOR_HIGHLIGHTED_FOREGROUND
Displayable的其他作用
设置标题: setTitle
添加删除命令按钮: addCommand,removeCommand
按钮类型
通过构造函数设置长标签
按钮类型(按照数字1-8排序,注意,这个数字不是优先级):SCREEN,BACK,CANCEL,OK,HELP,STOP,EXIT,ITEM,可用于:
SCREEN:面向整个屏幕组件进行操作
BACK:返回上一个操作时可用
CANCEL,OK: 在有是否选择的情况下可用
HELP:想要出现在线帮助时可用
STOP:停止某个操作而不做屏幕切换
EXIT:退出当前应用程序时可用
ITEM:面向屏幕的局部进行操作
千万注意:所有的事件代码需要自己写,按钮类型只是提供了一个分类而已
多个按钮加入界面的排布规律
不同种类的按钮,WTK优先级排序: ITEM,SCREEN,OK, HELP, BACK, EXIT ,CANCEL , STOP,优先级高按钮优先显示在上方
同一种类的按钮,在构造函数内划分优先级,数字越小越优先
BACK,CANCEL, EXIT, STOP倾向于抢占左方,优先顺序: BACK,CANCEL, EXIT, STOP
注意:只是在WTK内满足这个规律,其他模拟器可能不相同
Command事件和List
命令按钮的事件响应
第一步:编写一个类,实现CommandListener
第二步:重写里面的CommandAction方法,编写事件响应代码
第三步:Displayable.setCommandListener()方法,将Displayable和和该类绑定
List基本知识
List创建时的三种类型
IMPLICIT:互斥
EXCLUSIVE:另一种互斥
MULTIPLE:可以多选
List选项维护
添加项,设置图片: append(“str”, Image.createImage(“filepath”))
删除项: delete
修改项: set
得到某项文本或者图片
设置字体:setFont(int,Font.getFont(face,style,size))
获得List选项
List选择事件——只针对IMPLICIT类型的List
List.setCommandListener()可以和事件响应接口直接绑定
Command类型以List.SELECTEDCCOMMAND标定
得到选择的项
对于单选:getSelectedIndex(),getString()
对于多选:方法1:遍历各个选项,判断每项有没有被选;方法2:getSelectedFlags然后判断哪些项被选
TextBoxTextBox,Ticker,Ticker和AlertAler
创建TextBox,指定标题,文字,最大长度,输入限制
常见输入限制:TextField.ANY
获得光标位置getCaretPosition()
获取文本: getString()
插入文本:insert
替换文本:setString,setChars
删除文本:delete
Ticker及其用法
生成滚动条:Ticker
显示/隐藏滚动条:setTicker
获取或设置滚动条内容:set/getString
提示窗口: Alert
重要内容:
title:标题
alertText:提示信息
alertImage:图片
alertType:类型
ALARM:提醒
CONFIRMATION:确认
ERROR :错误
INFO :通知
WARNING :警告
setTimeout(inttime):设置持续时间
利用Display进行切换
表单元素
Item的子类,可以通过Form. append(Itemitem)添加到界面上,不再占据整个屏幕
ChoiceGroup和前面学习的List类似,除了可以实现单选和复选之外,还可以实现下拉菜单
类型的确定:
Choice.EXCLUSIVE: 单选
Choice.MULTIPLE: 复选
Choice.POPUP: 下拉菜单
其他和List类似
DateField利用getDate得到相应的时间
创建DataField时的模式:
DataField.DATE:只显示或修改日期
DataField.TIME:只显示或修改时间
DataField.DATE_TIME:显示或修改日期时间
Gauge几个基本属性:重要方法:getValue,setValue
label:标题
interactive:是否可以修改进度条的值
maxValue:最大值
initialValue:初始值
ImageItem
几个基本属性:
label:标题
image:图像
layout:布局方式:常见左对齐,右对齐,居中等,可以通过|多选
altText:图像不能装载时的提示文字
TextField
TextField和TextBox的区别:不能直接作为屏幕显示
常见限制:
TextField.ANY:任意字符
TextField.EMAILADDR:Email
TextField. NUMERIC:整数
TextField.DECIMAL:小数
TextField.PASSWORD:密码
TextField.UNEDITABLE:不可编辑
其他用法和Textbox类似
StringItem
在屏幕上显示一个字符串
常见属性
label:标题
text: 内容
appearanceMode: 显示方式
Item.PLAIN Item.BUTTON Item.HYPERLINK
表单元素事件
ItemCommandListener
适用于在表单上将某个表单元素和命令按钮绑定
用CommandListener能否做到?
要点:
按钮加到Item上
实现ItemCommandListener
Item和实现类对象绑定
按钮用ITEM类型
ItemStateListener
某个表单元素状态改变时触发事件
要点:
实现ItemStateListener
Form和实现类对象绑定
案例11
1:基本界面和CommandCommand
CLDC(1.1):java.io---标准JavaIO包,J2SEIO包的子集
java.lang——核心语言包,J2SE核心语言包的子集
java.util——工具包
javax.microedition.io——CLDC通用连接框架类和接口。
MIDP(2.0+)
javax.microedition.midlet——MIDlet类包, 只包含一个MIDlet类可作为所有MIDlet的父类
javax.microedition.lcdui——界面类包,对GUI组件提供支持,
javax.microedition.rms——记录管理系统,支持数据库系统的不同类和接口,它们随后存储和检索MIDlet所用的数据 javax.microedition.lcdui.game——Game API,MIDP2.0游戏编程扩展
javax.microedition.media——多媒体类包
javax.microedition.media.control——多媒体控制类包
javax.microedition.pki——数字签名类包
另外还有javax.microedition.io包中的一部分类。
创建第一个MIDlet
MIDlet(Mobile Information Devices let):手机上运行的J2ME应用程序,即移动信息设备小程序。以后我们编写的就是MIDlet
用Eclipse创建第一个MIDlet
MIDlet在应用中可能存在的状态:
运行(Active)状态—程序正在运行中;
暂停(Paused)状态
调用notifyPaused( )函数,MIDlet立刻进入此状态;
MIDlet持有的所有资源暂时被释放,但它随时可能被运行;
销毁(Destroyed)状态
调用notifyDestroyed( )函数,MIDlet立刻进入此状态;
MIDlet被永久地关闭并且释放占用的所有资源,等待着废物清理程序的处理。
运行,打包
配置文件:MANIFEST
用来描述MIDletSuite的配置,如:名称、版本、开发商等;MANIFEST 文件为纯文本文件,文件扩展名为.mf.
MANIFEST 必须包含以下属性:
MIDlet-Name—MIDletSuite 的名称
MIDlet-Version—MIDletSuite 的版本号,格式为主版本.次版本.微版本,例如0.0.0,这也是版本号的默认值。版本号主要用于安装或升级。
MIDlet-Vendor —MIDletSuite 的提供商
JAD属性的说明
JAD 描述文件为纯文本文件,文件扩展名为.jad;说明具体的运行配置,以及Jar文件所在的位置的信息
JAD 描述文件必须提供如下属性:
MIDlet-Name—略
MIDlet-Version—略
MIDlet-Vendor—略
MIDlet-Jar-URL—下载该MIDletSuite 的URL 地址。虽然这里可以使用绝对位置或相对位置,但还是建议用绝对位置。
MIDlet-Jar-Size—JAR 文件的大小,计算单位为字节。
精解Display和Displayable
Display的其他作用
获取设备支持的颜色: numColors()
是否支持彩色:isColor()
背景颜色,前景颜色:COLOR_BACKGROUND ,COLOR_FOREGROUND
边框颜色,高亮边框色:COLOR_BORDER , COLOR_HIGHLIGHTED_BORDER
高亮背景色,高亮前景色:COLOR_HIGHLIGHTED_BACKGROUND , COLOR_HIGHLIGHTED_FOREGROUND
Displayable的其他作用
设置标题: setTitle
添加删除命令按钮: addCommand,removeCommand
按钮类型
通过构造函数设置长标签
按钮类型(按照数字1-8排序,注意,这个数字不是优先级):SCREEN,BACK,CANCEL,OK,HELP,STOP,EXIT,ITEM,可用于:
SCREEN:面向整个屏幕组件进行操作
BACK:返回上一个操作时可用
CANCEL,OK: 在有是否选择的情况下可用
HELP:想要出现在线帮助时可用
STOP:停止某个操作而不做屏幕切换
EXIT:退出当前应用程序时可用
ITEM:面向屏幕的局部进行操作
千万注意:所有的事件代码需要自己写,按钮类型只是提供了一个分类而已
多个按钮加入界面的排布规律
不同种类的按钮,WTK优先级排序: ITEM,SCREEN,OK, HELP, BACK, EXIT ,CANCEL , STOP,优先级高按钮优先显示在上方
同一种类的按钮,在构造函数内划分优先级,数字越小越优先
BACK,CANCEL, EXIT, STOP倾向于抢占左方,优先顺序: BACK,CANCEL, EXIT, STOP
注意:只是在WTK内满足这个规律,其他模拟器可能不相同
Command事件和List
命令按钮的事件响应
第一步:编写一个类,实现CommandListener
第二步:重写里面的CommandAction方法,编写事件响应代码
第三步:Displayable.setCommandListener()方法,将Displayable和和该类绑定
List基本知识
List创建时的三种类型
IMPLICIT:互斥
EXCLUSIVE:另一种互斥
MULTIPLE:可以多选
List选项维护
添加项,设置图片: append(“str”, Image.createImage(“filepath”))
删除项: delete
修改项: set
得到某项文本或者图片
设置字体:setFont(int,Font.getFont(face,style,size))
获得List选项
List选择事件——只针对IMPLICIT类型的List
List.setCommandListener()可以和事件响应接口直接绑定
Command类型以List.SELECTEDCCOMMAND标定
得到选择的项
对于单选:getSelectedIndex(),getString()
对于多选:方法1:遍历各个选项,判断每项有没有被选;方法2:getSelectedFlags然后判断哪些项被选
TextBoxTextBox,Ticker,Ticker和AlertAler
创建TextBox,指定标题,文字,最大长度,输入限制
常见输入限制:TextField.ANY
获得光标位置getCaretPosition()
获取文本: getString()
插入文本:insert
替换文本:setString,setChars
删除文本:delete
Ticker及其用法
生成滚动条:Ticker
显示/隐藏滚动条:setTicker
获取或设置滚动条内容:set/getString
提示窗口: Alert
重要内容:
title:标题
alertText:提示信息
alertImage:图片
alertType:类型
ALARM:提醒
CONFIRMATION:确认
ERROR :错误
INFO :通知
WARNING :警告
setTimeout(inttime):设置持续时间
利用Display进行切换
表单元素
Item的子类,可以通过Form. append(Itemitem)添加到界面上,不再占据整个屏幕
ChoiceGroup和前面学习的List类似,除了可以实现单选和复选之外,还可以实现下拉菜单
类型的确定:
Choice.EXCLUSIVE: 单选
Choice.MULTIPLE: 复选
Choice.POPUP: 下拉菜单
其他和List类似
DateField利用getDate得到相应的时间
创建DataField时的模式:
DataField.DATE:只显示或修改日期
DataField.TIME:只显示或修改时间
DataField.DATE_TIME:显示或修改日期时间
Gauge几个基本属性:重要方法:getValue,setValue
label:标题
interactive:是否可以修改进度条的值
maxValue:最大值
initialValue:初始值
ImageItem
几个基本属性:
label:标题
image:图像
layout:布局方式:常见左对齐,右对齐,居中等,可以通过|多选
altText:图像不能装载时的提示文字
TextField
TextField和TextBox的区别:不能直接作为屏幕显示
常见限制:
TextField.ANY:任意字符
TextField.EMAILADDR:Email
TextField. NUMERIC:整数
TextField.DECIMAL:小数
TextField.PASSWORD:密码
TextField.UNEDITABLE:不可编辑
其他用法和Textbox类似
StringItem
在屏幕上显示一个字符串
常见属性
label:标题
text: 内容
appearanceMode: 显示方式
Item.PLAIN Item.BUTTON Item.HYPERLINK
表单元素事件
ItemCommandListener
适用于在表单上将某个表单元素和命令按钮绑定
用CommandListener能否做到?
要点:
按钮加到Item上
实现ItemCommandListener
Item和实现类对象绑定
按钮用ITEM类型
ItemStateListener
某个表单元素状态改变时触发事件
要点:
实现ItemStateListener
Form和实现类对象绑定
案例11
package prj7_1; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.ImageItem; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.lcdui.TextBox; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class MessageMIDlet extends MIDlet implements CommandListener,ItemStateListener{ private Display dis; /******************欢迎界面**********************/ private Form welcomeForm = new Form("欢迎界面"); private ImageItem welcomeItem; private Command cmdExit = new Command("退出程序",Command.EXIT,1); private Command cmdWriteMsg = new Command("写短信",Command.SCREEN,1); /******************短信编辑界面*******************/ private Form frmMsg = new Form("请您输入短信"); private TextField tfMsg = new TextField("","",255,TextField.ANY); private Command cmdMsgBack = new Command("返回",Command.BACK,1); private Command cmdMsgDel = new Command("清除文本",Command.BACK,1); private Command cmdSend = new Command("发送",Command.SCREEN,1); /******************发送界面**********************/ private TextBox tbPhone = new TextBox("请您输入对方号码","",15,TextField.NUMERIC); private Command cmdPhoneBack = new Command("返回",Command.BACK,1); private Command cmdOK = new Command("确定",Command.SCREEN,1); public MessageMIDlet() { /******************欢迎界面初始化**********************/ Image welcomeImg = null; try{ welcomeImg = Image.createImage("/welcome.png"); }catch(Exception ex){ ex.printStackTrace(); } welcomeItem = new ImageItem("欢迎您的到来",welcomeImg,Item.LAYOUT_CENTER,""); } protected void startApp() throws MIDletStateChangeException { dis = Display.getDisplay(this); dis.setCurrent(welcomeForm); /******************欢迎界面初始化**********************/ welcomeForm.append(welcomeItem); welcomeForm.addCommand(cmdExit); welcomeForm.addCommand(cmdWriteMsg); /******************短信编辑界面初始化*******************/ frmMsg.append(tfMsg); frmMsg.addCommand(cmdMsgBack); frmMsg.addCommand(cmdSend); /******************发送界面初始化**********************/ tbPhone.addCommand(cmdPhoneBack); tbPhone.addCommand(cmdOK); /******************事件绑定代码***********************/ welcomeForm.setCommandListener(this); frmMsg.setCommandListener(this); tbPhone.setCommandListener(this); frmMsg.setItemStateListener(this);//Item状态事件 } public void commandAction(Command c,Displayable d){ if(c==cmdExit){ this.notifyDestroyed(); } else if(c==cmdWriteMsg){ dis.setCurrent(frmMsg); } else if(c==cmdMsgBack){ dis.setCurrent(welcomeForm); } else if(c==cmdMsgDel){ int position = tfMsg.getCaretPosition(); tfMsg.delete(position-1, 1); if(tfMsg.size()==0){ frmMsg.removeCommand(cmdMsgDel); frmMsg.addCommand(cmdMsgBack); } } else if(c==cmdSend){ dis.setCurrent(tbPhone); } else if(c==cmdPhoneBack){ dis.setCurrent(frmMsg); } else if(c==cmdOK){ System.out.println("短信成功发出"); System.out.println("短信内容:"+tfMsg.getString()); System.out.println("短信发送目的地"+tbPhone.getString()); } } public void itemStateChanged(Item item) { if(item==tfMsg){ if(tfMsg.size()!=0){ frmMsg.removeCommand(cmdMsgBack); frmMsg.addCommand(cmdMsgDel); } } } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { // TODO Auto-generated method stub } protected void pauseApp() { // TODO Auto-generated method stub } }
- 源代码.zip (2.3 MB)
- 下载次数: 6
发表评论
-
J2ME代码优化
2011-01-17 10:09 909为什么要优化 CPU不快:10-400MHz 内存有限 ... -
GameAPI
2011-01-17 10:06 1683游戏画布,图层和游戏精灵 简介 javax.microed ... -
网络编程
2011-01-15 08:11 9761、Socket编程 Socket是什么 Socket是套接字 ... -
MSRMS编程
2011-01-13 08:35 983基础知识 持久化存储的 ... -
画布开发
2011-01-12 13:48 1206CanvasCanvas绘图 画布属于低级界面 Canva ... -
高级开发
2011-01-07 14:08 857高级开发 异常处理 异常的出现 程序运行时由于一些不可预知的 ... -
体系介绍和环境配置
2010-12-20 14:16 807J2ME简介 Three Java Platforms ...
相关推荐
在J2ME(Java 2 Micro Edition)平台上进行高级界面开发时,Command事件和List组件是构建用户交互界面的关键元素。本教程旨在深入探讨这两个核心概念,帮助开发者掌握如何有效地利用它们来创建功能丰富的移动应用。 ...
2. 高级界面开发1基本界面和Command 3. 高级界面开发2Command事件和List 4. 高级界面开发3TextBox,Ticker和Alert 5. 高级界面开发4表单元素 6. 高级界面开发5表单元素事件 7. 案例1 8. 异常处理 9. 多线程 10. 数值...
2. 高级界面开发1基本界面和Command 3. 高级界面开发2Command事件和List 4. 高级界面开发3TextBox,Ticker和Alert 5. 高级界面开发4表单元素 6. 高级界面开发5表单元素事件 7. 案例1 8. 异常处理 9. 多线程 10. 数值...
2. 高级界面开发1基本界面和Command 3. 高级界面开发2Command事件和List 4. 高级界面开发3TextBox,Ticker和Alert 5. 高级界面开发4表单元素 6. 高级界面开发5表单元素事件 7. 案例1 8. 异常处理 9. 多线程 10. 数值...
Java程序设计高级界面开发是Java开发者进阶过程中的一项重要技能,它涉及到Swing、JavaFX等库的应用,以及自定义组件、事件处理、布局管理等多个方面。本资料"java程序设计高级界面开发代码.zip"提供了丰富的源代码...
高级界面开发4表单元素1.rar" 提示我们这是一个关于J2ME(Java 2 Micro Edition)高级界面设计的教程,重点在于表单元素的开发。在J2ME中,界面开发对于创建交互式移动应用至关重要,而表单元素则是用户与应用进行...
在J2ME(Java 2 Micro Edition)平台上进行高级界面开发时,表单元素是构建用户交互界面不可或缺的一部分。本教程“5. 高级界面开发4表单元素2”着重探讨了如何有效地利用这些元素来提升移动应用的用户体验。J2ME是...
高级界面开发5表单元素事件.rar"这个压缩包文件,显然包含了关于如何处理J2ME中表单元素事件的深入教程。J2ME的界面开发通常涉及到MIDP(Mobile Information Device Profile)和CLDC(Connected Limited Device ...
在J2ME(Java 2 Micro Edition)平台上进行高级界面开发是为移动设备和嵌入式系统构建应用程序的关键环节。本教程重点介绍了三个关键组件:TextBox、Ticker和Alert,这些都是在J2ME MIDP(Mobile Information Device...
本教程将深入探讨J2ME中的高级界面开发,尤其是基本界面构建和Command类的使用。通过学习这些内容,开发者可以创建更加用户友好的交互式应用。 首先,我们要理解J2ME中的基本界面概念。在J2ME中,用户界面主要由...
在J2ME(Java 2 Micro Edition)平台上进行高级界面开发是移动应用开发的重要部分,尤其是在功能手机时代。本教程“4. 高级界面开发3TextBox,Ticker和Alert1”专注于利用这些组件来创建更丰富的用户体验。让我们...
在J2ME(Java 2 Micro Edition)的高级界面开发中,Command事件和List组件是构建用户交互界面的关键元素。本教程将深入讲解这两个概念,帮助开发者创建更加丰富和功能强大的移动应用程序。 首先,让我们来看一下...
高级界面开发5表单元素事件.rar”似乎包含了关于使用J2ME进行高级界面开发,特别是关于表单元素事件处理的内容。表单元素是用户与应用程序交互的重要方式,而事件处理则是实现这种交互的关键机制。 在J2ME中,界面...
手机游戏开发重要技术资料分享2.高级界面开发1基本界面和Command.zip
手机游戏开发重要技术资料分享5.高级界面开发4表单元素.zip
手机游戏开发重要技术资料分享6.高级界面开发5表单元素事件.zip
手机游戏开发重要技术资料分享3.高级界面开发2Command事件和List.zip
手机游戏开发重要技术资料分享4.高级界面开发3TextBox,Ticker和Alert.zip
3.高级界面开发2Command事件和List1\03-6.swf