- 浏览: 197223 次
- 性别:
- 来自: 湖南
文章分类
最新评论
高级界面开发
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 879为什么要优化 CPU不快:10-400MHz 内存有限 ... -
GameAPI
2011-01-17 10:06 1639游戏画布,图层和游戏精灵 简介 javax.microed ... -
网络编程
2011-01-15 08:11 9391、Socket编程 Socket是什么 Socket是套接字 ... -
MSRMS编程
2011-01-13 08:35 954基础知识 持久化存储的 ... -
画布开发
2011-01-12 13:48 1177CanvasCanvas绘图 画布属于低级界面 Canva ... -
高级开发
2011-01-07 14:08 826高级开发 异常处理 异常的出现 程序运行时由于一些不可预知的 ... -
体系介绍和环境配置
2010-12-20 14:16 767J2ME简介 Three Java Platforms ...
相关推荐
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. 数值...
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
6. 高级界面开发5表单元素事件.rar
4.高级界面开发3TextBox,Ticker和Alert2.rar
3.高级界面开发2Command事件和List1\03-7.swf
3.高级界面开发2Command事件和List1\03-6.swf
3.高级界面开发2Command事件和List1\03-5.swf
3.高级界面开发2Command事件和List1\03-4.swf
Java编程高级界面各种形式的设计程序源代码,供学习java的认识参考,新鲜程度是决定蔬菜价值的重要指标,蔬菜在采摘后仍是鲜活的有机体,因此需要采用冷藏运输降低蔬菜的呼吸和蒸腾作用,保持蔬菜新鲜度。
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发
J2ME开发教程,完整的介绍J2ME的开发体系和基本开发