|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net里有这些工具吗?要简单多少?。条记在编写手机程序时,常常要举行各个屏幕间的切换。一入手下手不晓得怎样往做,这两天看了一个例子,很复杂,但很能申明成绩。总结一下。若有不当以外,请妙手改正!
功效:在主程序中有多个按钮,每个按钮对应一个功效,每个功效要分歧的屏幕(元素)体现出来。
完成:
1、主程序中一定界说了一个Display对像,如privateDisplaydisplay,它暗示以后的屏幕。另有一些Displayable对像。如Form,TextField等都是Displayable的子类。在主程序中经由过程dipslay.serCurrent(Displayable实例名);便可将当Displayable实例到场以后的屏幕。以下程序:
privateDisplaydisplay;
privateFormform=newForm(“一个Form“);
publicvoidstartApp()
{
display.setCurrent(form);
}
感化是将form增加到以后的屏幕傍边。
2、要想举行屏幕间的切换,只需将你想显现的东东放到到主程序的display对象中便可。主程序中界说了一个display,则要在另外一个屏幕(我临时把它称之为方针屏幕)中援用到主程序的display。
开辟情况:Win2000server+Eclipse+WTK2.1
用以下代码申明:
MainMIDlet.java:主程序,一个尺度的MIDlet。
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.lcdui.*;
publicclassMainMIDletextendsMIDletimplementsCommandListener{
privateDisplaydisplay;
privateFormform=newForm("Wellcome!!");
privateCommandokCommand=newCommand("OK",Command.OK,1);//选择OK,换到下一个屏幕
privateFormns;
privateStringItemsi=newStringItem("FirstScreen","~_~");
publicMainMIDlet()
{
form.addCommand(okCommand);
form.append(si);
}
publicvoidstartApp(){
display=Display.getDisplay(this);
display.setCurrent(form);
form.setCommandListener(this);//对form到场CommandListener
}
publicvoidpauseApp(){
}
publicvoiddestroyApp(booleanb){
}
publicvoidcommandAction(Commandc,Displayables)
{
if(c==okCommand)
{
ns=newNextScreen(display,form);//最关头的中央在这里:)
display.setCurrent(ns);
}
}
}
在这个MIDlet中,界说了一个Display对像display。
和一个两个Displayable对象Formform及StringItemsi。运转后显现在屏幕傍边。
另有个一CommandokCommand,其感化是触发下一个屏幕。
在publicvoidcommandListener中能够看到,铛铛前按下的按钮是okCommand时,初始化一个NextScreen对象
ns=newNextScreen(display,form);
将display和form传进,感化就是举行屏幕的切换。
上面是NextScreen的完成:
NextScreen.java第二个屏幕的代码
importjavax.microedition.lcdui.*;
publicclassNextScreenextendsFormimplementsCommandListener{
privateDisplaydisplay;
privateDisplayableparent;
privateCommandbackCommand=newCommand("BACK",Command.BACK,1);
privateStringItemsi=newStringItem("SecondScrean","~_~");
publicNextScreen(Displayd,Displayablep)
{
super("nextscreen");
display=d;
parent=p;
append(si);
addCommand(backCommand);
setCommandListener(this);
}
publicvoidcommandAction(Commandc,Displayables)
{
//前往上一个屏幕
if(c==backCommand)
{
display.setCurrent(parent);
}
}
}
它承继自Form类。
在NextScreen中又界说了一个Displaydisplay,将用它来标识以后的元素显现在哪个屏幕中。
一个Formform,一个StringItemsi。这是以后屏幕中要显现的东东:)
机关函数中的super("secondscreen");的感化是使得NextScreen能够间接调中其父类Form中的函数。
backCommand的感化是前往上一个屏幕。
将form,si及backCommand到场NextScreen中,一个NextScreen的实例就完成了。在主程序(MainMIDlet)中,就是ns。
接上去,最关头的中央,就是在MainMIDlet中的这一句:display.setCurrent(ns);
就是把ns在以后的屏幕中显现出来!如许就能够看到NextScreen中界说的各个元素(form,si)了!
然后想前往原屏幕,怎样办呢?这时候NextScreen中的backCommand就起感化了。
细心看这两句:
在MainMIDlet.java中:
ns=newNextScreen(display,form);
它将form也传了出来。它有甚么用呢?
在NextScreen的机关函数中:
dispaly=d;
这一句实在即是:NextScreen.display=MainMIDlet.display;
如许,NextScreen就失掉了以后的屏幕,它就随便的在下面放东东了。
parent=p;
这一句实在即是:NextScreen.parent=MainMIDlet.form;
从字面意义不难了解,本来是把主程序的form当做parent(怙恃),如许就失掉以后屏幕的前一个屏幕中所显现的内容!!
然后在commandAction中,假如backCommand按下了,则实行display.serCurrent(parent);如许,又把本来的屏幕给show出来了:)
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点, |
|