我是.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();
}
}
答案 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。根据我的回忆,这种方式会更可靠。
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);
}