2012-03-14 30 views
1

我是.Net開發人員,目前正在遷移到java。我在這裏錯過了什麼?我運行程序時沒有顯示?J2ME在運行應用程序時不顯示

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

不要設置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(); 
    } 
} 
2

缺少什麼我在這裏?

嘛,據我可以告訴你的代碼偏出調用Display.setCurrent(Displayable),這將要求「......一個不同的Displayable對象可以在顯示器上可見......」(報價API文檔)。

當我運行該程序時沒有顯示?

這是預期的行爲,考慮到上述情況。如果您在startApp方法中調用display.setCurrent(form),您很可能會看到該表單。

附註。我還會考慮將日曆DateField的初始化從構造函數移動到startApp。根據我的回憶,這種方式會更可靠。

  • 還的startApp的這一部分看起來很可疑:
    Form form = new Form("Calender"); /* why is 'Form' here? */
    據我可以告訴消除Form將使更多的意義
+0

不過它沒有顯示。我試過了。 – Lion 2012-03-14 13:10:12

+0

@Lion不知道你嘗試了什麼,但沒有'setCurrent'什麼也不會顯示,這肯定是 – gnat 2012-03-14 13:25:16

+0

沒有'setCurrent()'沒有顯示什麼是正確的。它只顯示(使用'setCurrent()')'Date In:'。我無法弄清楚。 – Lion 2012-03-14 13:28:53

2

只需要使用的startApp一個代碼以下行()方法

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