当前位置: 代码迷 >> Java相关 >> 新手问setCurrent()的问题
  详细解决方案

新手问setCurrent()的问题

热度:178   发布时间:2010-01-19 17:14:17.0
新手问setCurrent()的问题
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Sky extends MIDlet implements CommandListener {
        public Form f1,f2,f3;


        public Command c1,c2,c3;
        public Display d;
        public Sky(){
            c1 = new Command("进入游戏",Command.SCREEN,1);
            c2 = new Command("游戏帮助",Command.SCREEN,2);
            c3 = new Command("退出游戏",Command.SCREEN,3);
            f1 = new Form("欢迎进入 恋空游戏");
            f1.append("恋空%……");
            f1.addCommand(c1);
            f1.addCommand(c2);
            f1.addCommand(c3);
            f1.setCommandListener(this);

            f2 = new Form("欢迎使用 恋空帮助");
            f2.append("这是帮助!");
            f2.addCommand(c1);
            f2.addCommand(c3);
            f2.setCommandListener(this);

            f3 = new Form("恋空~~");
            f3.append("游戏加载中……");
            f3.addCommand(c2);
            f3.addCommand(c3);
            f3.setCommandListener(this);

            d =  Display.getDisplay(this);
            
         }
        public void startApp(){
            d.setCurrent(f1);
        }
        public void pauseApp(){}
        public void destroyApp(boolean f){}
        public void commandAction(Command now, Displayable d){
            if(now == c1)
                d.setCurrent(f3);
            if(now == c2)
                d.setCurrent(f2);
   
            if(now == c3)
                this.notifyDestroyed();   
            
        }
        

}

红色部分在wtk中报错,不能通过编译


Project settings saved
Building "Test01"
C:\WTK25\apps\Test01\src\Sky.java:42: 找不到符号
符号: 方法 setCurrent(javax.microedition.lcdui.Form)
位置: 类 javax.microedition.lcdui.Displayable
                d.setCurrent(f3);
                 ^
C:\WTK25\apps\Test01\src\Sky.java:44: 找不到符号
符号: 方法 setCurrent(javax.microedition.lcdui.Form)
位置: 类 javax.microedition.lcdui.Displayable
                d.setCurrent(f2);   
                 ^
2 错误
com.sun.kvem.ktools.ExecutionException
Build failed



若是删掉则通过编译,请问哪错了,为什么,十分感谢!
搜索更多相关的解决方案: setCurrent  

----------------解决方案--------------------------------------------------------
Java编写的啊,这个我看着就头晕
----------------解决方案--------------------------------------------------------
程序代码:
            if(now == c1)
               Display.getDisplay(this).setCurrent(f3);
            else if(now == c2)
                Display.getDisplay(this).setCurrent(f2);   
            else if(now == c3)
                this.notifyDestroyed();   
if与else应该比只有if运算速度快。

设置屏幕对象要有获取当前屏幕语句,不知你的代码是谁教你的。。。
                                                     。我们非常的无语。。
----------------解决方案--------------------------------------------------------
回复 3楼 qq379264347
请问在此情况下if-else为何比if快呢,各个条件是相对独立的啊。
另外,我的成员变量d =  Display.getDisplay(this);
你根本没有找到问题所在啊
----------------解决方案--------------------------------------------------------
程序代码:
public void commandAction(Command now, Displayable d){




看到这里的参数了吗?有个d,不是用的你自定义的那个d。

所以下面的d也就不能引用而导致错误了。
----------------解决方案--------------------------------------------------------
感谢楼上!
----------------解决方案--------------------------------------------------------
呵呵,共同进步。
你那个我确实没看见,是手机UC回复你的。
不过现在解决了。

if-else语句我感觉比纯if要快,不过也差不了多少,毕竟if语句不多,你可以计算程序运行时间来比较会更明白,直接。看下class字节码也会明白一些,因为if-else种if语句最后是goto 标号;语句。

我记得是。。点出来,探讨下。
----------------解决方案--------------------------------------------------------
  相关解决方案