2012-03-14 14 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

私はここで何をしないのですか?

はまあ私の知る限り、あなたのコードは、(引用APIドキュメント)「... ...異なる表示可能なオブジェクトは、ディスプレイ上で可視化されることを」を要求すること、Display.setCurrent(Displayable)を呼び出すためにミス。

プログラムを実行すると表示されません。

これは、上記を考慮して予想される動作です。ほとんどの場合、startAppメソッドでdisplay.setCurrent(form)を呼び出すと、フォームが表示されます。

サイドノート。私はまた、calender DateFieldのコンストラクタをstartAppに移動することを検討します。私の思い出によれば、この方法はより信頼できるでしょう。

  • もにstartAppのこの部分は非常に怪しいです:
    Form form = new Form("Calender"); /* why is 'Form' here? */
    限り、私はFormを削除すると
+0

まだそれが表示されていません。私はそれを試しました。 – Lion

+0

@Lionはあなたが試したことが分かりませんが、 'setCurrent'がなければ何も表示されません。それは確かです。 – gnat

+0

' setCurrent() 'がなければ何も表示されません。 'setCurrent()')で 'Date In:'と表示されます。私はそれを理解することはできません。 – Lion

2

だけにstartAppのコードのいずれかの次の行を使用します()メソッド

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