



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MIDP图形用户界面1.Display代表系统的显示和输入设备的管理器,每个MIDlet都对应惟一的一个Display实例。MIDlet可以通过Display.getDisplay(MIDlet midlet)方法获得Display对象,当获取了Display对象后,就可以把我们自己定义的各种Display对象放到界面上,并通过导航键或者其它方式控制把某个Display对象显示在界面上。2. MIDP提供了Screen和Canvas两种不同的Display接口。3. TextBox组件:是Screen的子类,用来编辑文本。构造:public TextBox(String label,String text,int maxSize,int constraints),4个参数分别指定标题栏、文本框初始化文本、文本框最大可容纳的字符数,以及可输入的字符类型。constraints可以是以下常量:a) TextField.ANY:允许输入任意字符。b) TextField.EMAILADDR:仅允许输入E-mail地址c) TextField.NUMERIC:仅允许输入数字d) TextField.PHONENUMBER:仅允许输入电话号码e) TextField.URL:仅允许输入URL地址f) TextField.DECIMAL:仅允许输入小数以上常量还可以和下列常量组合,增强了对用户输入的检查和限制:a. TextField.PASSWORD:以*显示用户输入的口令b. TextField.UNEDITABLE:不允许用户编辑TextBox的内容。c. TextField.SENSITIVE:表用户输入的是敏感内容,不允许使用联想或自动完成等输入法d. TextField.NON_PREDICTIVE:表示用户输入的是并非字典里的单词,不必使用联想等输入法e. TextField.INITIAL_CAPS_WORD:指示每个单词的首字母自动变成大写f. TextField.INITIAL_CAPS_SENTENCE:指示每句话的首字母自动变成大写例如:只允许用户输入最多6位且仅由数字组成的口令,new TextBox(UIDemo,输入密码,6,TextField.NUMERRIC|TextField.PASSWORD);4. TextBox还继承了Screen的4个方法:a) public Ticker getTicker();b) public void setTicker(Ticker ticker);/为文本框设置一个Ticker对象。Ticker是显示在界面上方的一个窄的区域,用于显示一个连续滚动的字符串c) public String getTitle();/获取文本框的标题d) public void setTitle(String titlic);/设置文本框的标题/创建ticker,并为TextBox设置tickerTicker ticker = new Ticker(欢迎访问J2ME开发网);textbox.setTicker(ticker);5. 在javax.microedition.lcdui包中定义了Command和CommandListener,使用它们可以处理高级事件处理。Command对象代表一个命令按钮,它必须被添加到一个Display对象上,当这个Display被显示时,所有相关的Command都会显示在手机界面下方的左右两侧,这样就可以用手机的左右软件键进行选择了。当用户选择某个Command后,与当前Displayable对象关联的CommandListener就会被自动调用,我们可以在CommandListener对象的commandAction(Command c,Displayable d)方法中处理命令。6. Command事件处理机制分以下3步:a) 创建一个或多个Command对象;b) 将一个或多个Command对象附加到Displayable对象上;c) 设置Displayable对象的CommandListener(监听器)7. List组件:List是一个列表框,也是Screen的子类,用来显示一系列的列表项。两个构造:a) List(String title,int listType)/创建一个空的List,可以通过append()和delete()方法添加删除列表顼。b) List(Stirng title,int listType,Stirng stringElements,Image imageElements)/在创建List的同时初始化列表项。c) 这两个构造的第二个参数都用于指定List的模式,共3种,介绍如下:i. EXCLUSIVE模式:用户只能选择其中一项。public void commandAction(Command cmd,Displayable d)if(cmd=okCommand)/查询用户选择的Listint selectedIndex = list.getSelectedIndex();/getSelectedIndex()获得用户选择的列表项索引String item = list.getString(selectedIndex);/getString(int index)可以获得任意一项的内容Alert alert = new Alert(系统确认,您选择了+item,null,AlertType.CONFIRMATION);alert.setTimeout(2000);display.setCurrent(alert,list);ii. MULTIPLE模式:可以选择多项,也可以一项也不选。可以通过isSelectde(int elementsNum)检测某一项是否被选择。如果要一次查询所有被选中的列表项,使用getSelectedFlags(boolean flags)方法,传入一个不小于List列表项数量的boolean数组,查询数组的每个元素即可知道对应索引的列表项是否被选中了。/根据elements的内容初始化listprivate List list = new List(您善长的语言是,List.MULTIPLE,elements,null);private Command okCommand = new Command(选择,Command.OK,1);/给List对象附加一个“选择”命令public void commandAction(Command cmd,Displayable d)if(cmd=okCommand)boolean flags = new booleanlist.size();int num_selected = list.getSelectedFlags(flags);StringBuffer sb = new StringBuffer();for(int i=0;iflags.length;i+)if(flagsi)sb = sb.append(list.getString(i) + ,);String select = sb.toString();System.out.println(您选择了+select.substring(0,select.length()-2);iii. IMPLICIT模式:这个模式和EXCLUSIVE模式类似,但是用户的选择和确认是同时进行的,如Window中的菜单,一旦选择,命令也随即执行了。因此IMPLICIT可以直接作为MIDP应用程序的菜单来使用。在IMPLICIT模式下,List提供了一个默认的Command对象List.SELECT_COMMAND。在commandAction(Command cmd,Displayable displayable)的处理中,可以直接引用List.SELECT_COMMAND。if(cmd=List.SELECT_COMMAND)int selectedIndex = list.getSelectedIndex();String item = list.getString(selectedIndex);System.out.println(您选择了+item);如果要用自己定义的Command来取代默认的List.SELECT_COMMAND,则可以调用List的setSelectCommand(Command command)方法。这样用户选择某一列表项时,被激活的Command对象就是自定义的Command。例如,我们编写一个自定义的“选择命令来取代List默认的List.SELECT_COMMAND。如list.setSelectCommand(okCommand);list.setCommandListener(this);8. Form与Itema) Form是惟一可以在界面上任意添加子组件的类。凡是从Item继承而来的子类都可以添加到Form中,包括标签、文本域、图像等。Form统一管理添加进来的Item,并按照某种布局算法排列每个组件。b) Item是一个抽象类,在MIDlet1.0中,Item只定义了两个获取与设置标签的方法i. Public Stirng getLabel()ii. Public void setLabel(String label)c).MIDP2.0大幅地增加了Item的功能,不但允许通过setLayout()方法设置Item的布局方式,还能通过addCommand(Command command)方法为Item添加上下文命令。当一个Item处于激活状态时,其关联的命令会显示在界面下方两侧。通过setItemCommandListener(ItemCommandListener1)关联Item的命令处理类,就可以处理来自Item的命令。某些Item还有默认的Command,如果要改变默认的Command,可使用setDefaultCommand(Command command)方法,这和List处于IMPLICIT模式时拥有一个默认的SELECT_COMMAND类似。以下讲各个Item子类:1.TextField就是一个小型的文本框。创建TextField的方法与创建TextBox的方法类似。构造:TextField(String label,String text,int maxSize,int constraints),这个与TextBox稍有不同,TextField以label取代了TextBox的title,因为title是Form拥有的,而label则是Form中的每一个Item各自拥有的。下面的代码创建了一个Form,并添加了两个TextField,其label分别是用户名和密码:user = new TextField(用户名:,20,TextField.ANY);pass = new TextField(密码:,20,TextField.ANY|TextField.PASSWORD);2. DataField允许用户输入日期和时间,两个构造方法:a) DataField(String label,int mode)b) DateField(String label,int mode,TimeZone timeZone)第二个参数mode指定了DataField的输入模式,指定DataField.DATE则只允许用户输入日期,指定DataField.TIME则只允许用户输入时间,指定DataField.DATE_TIME则允许用户输入日期和时间。如果要在程序中设置DataField的初始化日期和时间,可使用DataField的setData()方法;若要获得用户输入的日期和时间,可使用DataField的getData()方法;若需要得到用户输入的年份、月份、或者小时等数值,只要借助Calendar提供的get()方法就可以方便地得到。if(cmd=okCommand)Date d = time.getDate();Calendar calendar = Calendar.getInstance();calendar.setTime(d);System.out.println(calendar.get(Calendar.YEAR);9. Gauge相当于Window的进度条,可以放入Form向用户显示进度。Gauge可根据其范围从0到指定的最大值与当前值决定如何显示进度。通常,Gauge是一个不断增长的进度条。构造:public Gauge(String label,boolean interactive,int maxValue,int initialValue).Gauge有交互和非交互两种模式,通过构造方法的interactive参数指定。maxValue指定了Gauge的最大值,initialValue指定了Gauge的初始值,它的值不得超过0到maxValue的范围,否则会抛出IllegalArgumentException异常.在非互模式下,Gauge只能向用户显示当前进度,程序通过Gauge的getValue()方法设置Gauge的当前值,就可以不断更新Gauge的显示进度。private Gauge gauge = new Gauge(进度条,false,99,0);form.append(gauge);public void run() / 当Gauge当前值小于最大值的时候,执行+1操作while(gauge.getValue()gauge.getMaxValue()gauge.setValue(gauge.getValue()+1);tryThread.sleep(100);catch(InterruptedException ie)允许用户调整游戏音乐的音量的大小:private Gauge gauge = new Gauge(音量调节,true,5,0);10. ChoiceGroup和List非常类似,不同的是,ChoiceGroup是可以放入到Form中的Item组件。ChoiceGroup也有Choice.EXCLUSIVE和Choice.MULTiPLE两种模式,分别支持单选和多选,但不支持List的IMPLICIT模式,因为ChoicGroupe作为一个Item组件被放入Item中,并不能独占整个界面。从MIDP2.0开始,ChoiceGroup还支持Choice.POPUP模式,这个模式类似于Window的下拉列表框11. ImageItem用于显示一个Image对象,我们只须创建一个Image对象,就可以构造出ImageItem对象,并附加到Form中,ImageItem有两个构造方法:a) ImageItem(String label,Image img,int layout,Stirng altText)b) ImageItem(String label,Image image,int layout,Stirng altText,int appearanceMode)c) Layout参数的定义和说明:ImageItem.LAYOUT_DEFAULT默认布局方式,ImageItem.LAYOUT_LEFT左对齐,ImageItem.LAYOUT_RIGHT右对齐,ImageItem.LAYOUT_CENTER居中对齐,ImageItem.LAYOUT_NEWLINE_BEFORE排列在下一行的最前,ImageItem.LAYOUT_NEWLINE_AFTER排在这一行的最后。d) appearanceMode参数和String的appearnceMode参数一致,可以是Item.PLAIN,Item.HYPERLINK和Item.BUTTON,分别以普通外观、超链接和按
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 盐城市亭湖区2025届化学九年级第一学期期末教学质量检测模拟试题含解析
- 河北省石家庄市栾城县2025届九上数学期末教学质量检测试题含解析
- 2024-2025学年广西陆川县联考数学九上期末学业水平测试模拟试题含解析
- 吉林省大安市第三中学2024年八年级物理第一学期期末达标测试试题含解析
- 河南省漯河市2024年物理八上期末教学质量检测模拟试题含解析
- 山东省潍坊联考2024年九年级化学第一学期期末综合测试试题含解析
- 2024年江苏省句容市九上数学期末经典试题含解析
- 湖南长沙雨花区雅境中学2024年数学九上期末联考试题含解析
- 湖南省长沙市浏阳市2025届物理八年级第一学期期末质量检测试题含解析
- 基础设施低碳转型-洞察及研究
- 学校物业管理的重点及难点分析
- 大脑病理解剖
- 探究智能生物降解材料-洞察分析
- 办公用品价格清单
- 天燃气锅炉房应急处理预案(2篇)
- 情商与智慧人生学习通超星期末考试答案章节答案2024年
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- 部编新人教版教材语文九年级上下册必背古诗词
- 浙江省居住建筑节能设计标准
- 2023年四川甘孜州遴选(考调)公务员考试真题
- 高等教育研究项目指南(3篇模板)
评论
0/150
提交评论