小元素状态改变侦听.docx

上传人:b****9 文档编号:25064953 上传时间:2023-06-04 格式:DOCX 页数:13 大小:142.61KB
下载 相关 举报
小元素状态改变侦听.docx_第1页
第1页 / 共13页
小元素状态改变侦听.docx_第2页
第2页 / 共13页
小元素状态改变侦听.docx_第3页
第3页 / 共13页
小元素状态改变侦听.docx_第4页
第4页 / 共13页
小元素状态改变侦听.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

小元素状态改变侦听.docx

《小元素状态改变侦听.docx》由会员分享,可在线阅读,更多相关《小元素状态改变侦听.docx(13页珍藏版)》请在冰豆网上搜索。

小元素状态改变侦听.docx

小元素状态改变侦听

第四章高级用户界面与事件处理(3)

首先给大家道歉,没有做好规则要求,课没有上好,导致了几个同学不能按时上机,于心不安,这样其实是害了大家,因此,我要再次强调规则,并落实这些规则。

这些内容应该在第一次课的时候就应该讲清楚,并落实,请下学年一定要注意。

1在课堂上委婉地阐述规则和执行,如上课纪律严肃,不定期定名,并记入成绩,从教学办拿来学生的名单并装在一个夹子里。

2规范要求上机报告的格式和内容,并交给学生电子版的报告范例,请准时交实验报告(委婉地说出如不按要求,不收)。

实验报告可以借鉴,但不许抄袭,尤其是总结都一样就有点令人困惑了,一旦发现,两份报告均作0分处理。

(1)由于课的安排的原因,导致不能很好地在实验前拿出实验报告的情况,必须提供类图和程序代码的初稿。

上机前必须带课堂笔记和兰笔,请遵守执行。

(2)对于一次实验中包括几个题目而需要分多次上机实验的情况,每次都需要提供一份完整的报告,几次报告完成之后,装订后交上来。

(3)一般实验报告的上交时间是上机实验后的第三天。

3低级用户界面上完之后,进行上机考核,不能通过者不参加期末考试。

4精心备课,以学生掌握为准,而不是以我是否完成目标,我是否讲的结构严谨为准。

每次上完课,要告诉同学应该看教材的哪些内容和预习哪些内容。

5督促学生在自己的机器上装好软件,在实验课中没有完成的,课后一定要完成。

6重新做机器,将学生成绩放在网上,及时公布(找小助手完成)

关于实验报告的规范,虽然实验指导书上有,但还是有些问题,责任我,我写了一个报告规范,请大家审阅并通过,执行下去。

这节课的最好,我们来说这个报告规范。

 

上节课,我们学习了Form和其上的小元素,如StingItem,ImageItem,这次课我们继续研究小元素,TextField和ChoiceGroup

上节课,我们学习了屏显的切换,这节课,我们来看看一个屏显的数据如何传到另外一个屏显上呢?

最后,我们再研究Form上小元素的状态的侦听,这种侦听基本上是针对输入框的,比如说输入的内容不同就会做出相应的反应等。

教学目标:

1掌握小元素TextField和ChoiceGroup的使用

2掌握不同屏显数据的传输

3初步认识小元素状态的侦听

教学注意:

上完课之后,告诉同学怎么看书,看书中哪些内容

一.综合举例:

小小计算器

1要求内容如图

2分析

(1)这肯定用到了Form屏显,有一个菜单用于计算,里面有三个TextField和一个ChoiceGroup。

(2)本题的交互应该比较简单,只是菜单侦听整个屏显就可以了,不有侦听子项,也不用侦听子项状态的变化。

也就是用CommandListener

(3)文本框内容的提取和写入方法:

getString()setString

例如:

firstTextField.getString()rusultTextField.setString(“5.0”);

但取出的时候是字符串,要用将它们转换成数才可以运算。

需要使用Double这个类的toString方法

数转成字符串:

restltStr=Double.toString(result);

字符串转成数:

result=Double.parseDouble(resultStr)

补充知识:

(1)关于TextField的构造方法

TextField(String label,String text,int maxSize,int constraints)

newTextField("first","",10,TextField.DECIMAL);

DECIMAL:

指小数

NUMBER指整数

ANY指任意的数

PASSWORD指密码

(2)关于ChoiceGroup的构造方法

ChoiceGroup(label, choiceType,stringElements,imageElements)

newChoiceGroup("sign",ChoiceGroup.POPUP,newString[]{"add","sub","mul","div"},null);

友情提示:

上面两个小元素的构造方法几乎与TextBox,List的构造函数一样。

3类图结构

4核心代码

publicvoidcommandAction(Commandc,Displayabled){

doubleresult=0;

if(c==calcCommand){

try{

switch(signChoiceGroup.getSelectedIndex()){

case0:

result=Double.parseDouble(firstTextField.getString())+Double.parseDouble(secondTextField.getString());

break;

case1:

result=Double.parseDouble(firstTextField.getString())/Double.parseDouble(secondTextField.getString());

break;

}

StringresultString=Double.toString(result);

resultTextField.setString(resultString);

}

catch(IllegalArgumentExceptione){

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

return;

}

}

}

二.数据的传递

1界面

2分析

一个屏,两个屏显,其中还有一个菜单和小元素

3类图结构

根据上面的分析,似乎很容易得到类图结构,如下:

但这里有个大问题,新的屏显,不能急于产生,因为产生的时候,我们想把数据发送过去,也就说是newForm的产生应该是这样的:

newForm=newForm(“newForm”,name,tel)就好了。

但Form的构造函数,并没有这样的格式,怎么办?

解决办法:

从Form里产生一个子类newForm来完成这样的任务。

我们构造的新的类内容如下:

publicclassNewFormextendsForm{

privateTextFieldnameTextField=newTextField("name","",8,TextField.ANY);

privateTextFieldtelTextField=newTextField("tel","",18,TextField.PHONENUMBER);

publicNewForm(Stringtitle,Stringname,Stringtel){

super(title);

nameTextField.setString(name);

telTextField.setString(tel);

this.append(nameTextField);

this.append(telTextField);

}

}

正确的类图结构如下:

三.侦听小元素内容、状态的改变

1侦听三步曲:

(1)侦听接口

(2)安装侦听器

(3)侦听后动作

2已学过的侦听

完成对屏显和FORM屏显上的小元素的命令侦听,也就是说当我们点击一个“命令”时候,就可以侦听到附加命令的“屏显”或者“小元素”,说白了,就是知道你点了哪个“屏显”或者“小元素”。

问题:

我们不点命令,能不能侦听到Form上的小元素发生变化呢?

这种要求不过份。

3侦听小元素内容、状态的改变

(1)接口

ItemStateListener

(2)侦听

屏显(Form).setItemStatelistener(this)

(3)交互

publicvoiditemStateChanged(Itemitem){

if(item==item1){}

elseif(item==item2){}

else{}

}

举例:

小元素TextField构造函数

TextFieldname=newTextField("name","",8,TextField.ANY);

侦听动作如下:

publicvoiditemStateChanged(Itemitem)

{

if(item==name)

{

summary.setString("输入的姓名为:

"+name.getString());

}

elseif(item==tel)

{

summary.setString("输入的电话为:

"+tel.getString());

}

else

summary.setString("");

}

四.简单案例

1功能介绍

2程序代码

importjavax.microedition.lcdui.Command;

importjavax.microedition.lcdui.CommandListener;

importjavax.microedition.lcdui.Display;

importjavax.microedition.lcdui.Displayable;

importjavax.microedition.lcdui.Form;

importjavax.microedition.lcdui.Item;

importjavax.microedition.lcdui.ItemCommandListener;

importjavax.microedition.lcdui.ItemStateListener;

importjavax.microedition.lcdui.TextField;

importjavax.microedition.midlet.MIDlet;

importjavax.microedition.midlet.MIDletStateChangeException;

publicclassMIDletItemCommmandListenerextendsMIDletimplementsItemCommandListener,CommandListener,ItemStateListener{

privateFormfrm=newForm("Item监听器");

privateTextFielduid=newTextField("用户名","",20,TextField.ANY);

privateTextFieldpwd=newTextField("密码","",20,TextField.PASSWORD);

privateDisplaydis=Display.getDisplay(this);

privateCommandDel=newCommand("删除",Command.ITEM,1);

publicMIDletItemCommmandListener(){

}

protectedvoidstartApp()throwsMIDletStateChangeException{

frm.append(uid);

uid.addCommand(Del);

pwd.addCommand(Del);

pwd.setItemCommandListener(this);

uid.setItemCommandListener(this);

frm.append(pwd);

dis.setCurrent(frm);

dis.setCurrentItem(pwd);//得到焦点

frm.setItemStateListener(this);

}

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{

}

protectedvoidpauseApp(){

}

publicvoidcommandAction(Commandc,Itemi){

if(c==Del)

{

TextFieldtf=(TextField)i;

intp=tf.getCaretPosition();

if(p>0)

{

tf.delete(p-1,1);

}

}

}

publicvoidcommandAction(Commandc,Displayabled){

}

publicvoiditemStateChanged(Itemi){

if(i==uid)

{

frm.setTitle("用户名"+uid.getString());

}elseif(i==pwd)

{

frm.setTitle("密码"+uid.getString());

}

}

}

 

板书设计

小元素状态的改变的侦听

1接口ItemStateListener

2侦听setItemStateListener()

3动作itemStateChanged()

举例:

动态地显示输入的内容

分析:

(1)小元素TextField构造函数

TextFieldname=newTextField("name","",8,TextField.ANY);

(2)name.getString()

(3)summary.setString(name.getString())

举例:

计算器

分析:

(1)关于ChoiceGroup的构造方法

ChoiceGroup(label, choiceType,stringElements,imageElements)

newChoiceGroup("sign",ChoiceGroup.POPUP,newString[]{"add","sub","mul","div"},null);

(2)数转成字符串:

restltStr=Double.toString(result);

字符串转成数:

result=Double.parseDouble(resultStr)

(3)异常处理

catch(IllegalArgumentExceptione){

alert.setTimeout(Alert.FOREVER);

display.setCurrent(alert);

}

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1