Display.getDisplay(MIDlet m)方法与display.setCurrent(Dispalyable disp)方法

来源:互联网 发布:软件测试 期刊 编辑:程序博客网 时间:2024/06/04 00:25

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class helloMyFriend extends MIDlet
{
   Display display;
   Form form;
   public helloMyFriend()
   {
  display=Display.getDisplay(this);
  form=new Form("游戏天地");
     form.append("欢迎光临!游戏制作世界/n朋友们快加入手机游戏制作");
   }

   public void startApp()
   {
    display.setCurrent(form);      
   }

   public void pauseApp(){}

   public void destroyApp(boolean unconditional){}
}

对于display=Dispaly.getDisplay(this),this代表的是什么?

一:MIDlet对象?

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class helloMyFriend extends MIDlet
{
   Display display;
   Form form;
   public helloMyFriend()
   {
  display=Display.getDisplay(new MIDlet());
  form=new Form("游戏天地");
     form.append("欢迎光临!游戏制作世界/n朋友们快加入手机游戏制作");
   }

   public void startApp()
   {
    display.setCurrent(form);     
   }

   public void pauseApp(){}

   public void destroyApp(boolean unconditional){}
}

可是javax.microedition.midlet.MIDlet 是抽象的;无法对其进行实例化。
二:helloMyFriend对象?

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class helloMyFriend extends MIDlet
{
   Display display;
   Form form;
   public helloMyFriend()
   {
  display=Display.getDisplay(new helloMyFriend());
  form=new Form("游戏天地");
     form.append("欢迎光临!游戏制作世界/n朋友们快加入手机游戏制作");
   }

   public void startApp()
   {
    display.setCurrent(form);     
   }

   public void pauseApp(){}

   public void destroyApp(boolean unconditional){}
}

虽然编译无错,但运行后启动不了!

也搞不清楚this到底代表的什么.........

对于dispaly.setCurrent(form),该函数的形参为Dispalyable类型的对象,而form在这里为什么合法?

form是Form类型的对象,而Form是Screen类的派生类,Screen是Dispalyable类的派生类。又因为派生类的对象具有所有祖先类的类型。所以form用在这里合理。