Java J2ME在应用程序运行时不显示

Java J2ME在应用程序运行时不显示,java,java-me,midp,lcdui,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

我是一名.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();
  }
} 
我错过了什么

就我所能告诉您的代码未调用而言,这将要求…在显示器上显示不同的可显示对象。。。引用API文档

运行程序时没有显示

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();
  }
} 
考虑到上述因素,这是预期行为。如果在startApp方法中调用display.setCurrentform,很可能会看到该表单

旁注。我还将考虑将Calnter日期字段从构造函数初始化为StaseApp。据我回忆,这种方法更可靠

此外,startApp的这一部分看起来很可疑: 表单=新表单日历;/*为什么“形式”在这里*/ 据我所知,删除表单将更有意义 我错过了什么

就我所能告诉您的代码未调用而言,这将要求…在显示器上显示不同的可显示对象。。。引用API文档

运行程序时没有显示

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();
  }
} 
考虑到上述因素,这是预期行为。如果在startApp方法中调用display.setCurrentform,很可能会看到该表单

旁注。我还将考虑将Calnter日期字段从构造函数初始化为StaseApp。据我回忆,这种方法更可靠

此外,startApp的这一部分看起来很可疑: 表单=新表单日历;/*为什么“形式”在这里*/ 据我所知,删除表单将更有意义 不要设置私有表单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();
    }
}
不要设置私有表单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();
    }
}

在startApp方法中只需使用下面一行代码

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

在startApp方法中只需使用下面一行代码

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

@Lion不知道您尝试了什么,但是如果没有setCurrent,则不会显示任何内容。这是肯定的。如果没有setCurrent,则不会显示任何内容。它仅在以下位置显示setCurrent Date:。我想不出来。@Lion是另外一个问题-这是未设置日期时允许的典型行为。它是无害的,但如果它让你紧张,试试calender.setDatenewDate;在你创建之后DateField@Lion不知道您尝试了什么,但是如果没有设置当前值,则不会显示任何内容。这是肯定的,如果没有设置当前值,则不会显示任何内容。它仅在以下位置显示setCurrent Date:。我想不出来。@Lion是另外一个问题-这是未设置日期时允许的典型行为。它是无害的,但如果它让你紧张,试试calender.setDatenewDate;创建该日期字段之后