| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1249 人关注过本帖
标题:新手问setCurrent()的问题
只看楼主 加入收藏
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
结帖率:100%
收藏
 问题点数:0 回复次数:6 
新手问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 
2010-01-19 17:14
刘晓鹏
Rank: 2
等 级:论坛游民
帖 子:70
专家分:68
注 册:2010-1-4
收藏
得分:0 
Java编写的啊,这个我看着就头晕
2010-01-19 18:31
qq379264347
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-20
收藏
得分:0 
程序代码:
            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运算速度快。

设置屏幕对象要有获取当前屏幕语句,不知你的代码是谁教你的。。。
                                                     。我们非常的无语。。
2010-01-30 20:11
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
回复 3楼 qq379264347
请问在此情况下if-else为何比if快呢,各个条件是相对独立的啊。
另外,我的成员变量d =  Display.getDisplay(this);
你根本没有找到问题所在啊
2010-01-31 21:40
qq379264347
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-20
收藏
得分:0 
public void commandAction(Command now, Displayable d){




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

所以下面的d也就不能引用而导致错误了。
2010-02-06 16:17
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
感谢楼上!
2010-02-06 19:15
qq379264347
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2009-9-20
收藏
得分:0 
呵呵,共同进步。
你那个我确实没看见,是手机UC回复你的。
不过现在解决了。

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

我记得是。。点出来,探讨下。
2010-02-10 12:20
快速回复:新手问setCurrent()的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020433 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved