J2ME运行应用程序时无显示

时间:2012-03-14 12:49:10

标签: java java-me midp lcdui

我是.Net开发人员,目前正在迁移到java。我在这里错过了什么?我运行程序时没有显示?

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import java.util.Date;
import java.util.TimeZone;

public class CalenderMIDlet extends MIDlet{
  private Form form = null;
  private DateField calender = null;  
  private static final int DATE = 0;

  public CalenderMIDlet(){
  calender = new DateField("Date In:", DateField.DATE, TimeZone.getTimeZone("GMT"));
  }

  public void startApp(){
  display = Display.getDisplay(this);
  Form form = new Form("Calender");
  form.append(calender);
  }

  public void pauseApp(){}

  public void destroyApp(boolean destroy){
  notifyDestroyed();
  }
} 

3 个答案:

答案 0 :(得分:3)

请勿设置private Form form = null;

试试此代码

import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import java.util.Date;
import java.util.TimeZone;

public class CalenderMIDlet extends MIDlet{
    private Form form;
    private Display display;
    private DateField calender;  
    private static final int DATE = 0;

    public CalenderMIDlet(){
        calender = new DateField("Date In:", DateField.DATE, TimeZone.getTimeZone("GMT"));
    }

    public void startApp(){
        display = Display.getDisplay(this);
        Form form = new Form("Calender");
        form.append(calender);
        display.setCurrent(form);
    }

    public void pauseApp(){}

    public void destroyApp(boolean destroy){
        notifyDestroyed();
    }
}

答案 1 :(得分:2)

  

我在这里缺少什么?

我可以告诉您的代码未命中调用Display.setCurrent(Displayable),这会请求“......在显示屏上显示不同的Displayable对象......” (引用API文档)。

  

运行程序时没有显示?

考虑到上述情况,这是预期的行为。最有可能的是,如果您在startApp方法中调用display.setCurrent(form),您将看到该表单。

旁注。我还会考虑将 calender DateField 的初始化从构造函数移动到startApp。根据我的回忆,这种方式会更可靠。

  • startApp的这一部分看起来很可疑:
    Form form = new Form("Calender"); /* why is 'Form' here? */
    据我所知,删除Form会更有意义

答案 2 :(得分:2)

只需在startApp()方法中使用以下一行代码

即可
 public void startApp(){
  display = Display.getDisplay(this);
  Form form = new Form("Calender");
  form.append(calender);
display.setCurrent(form);
  }