J2ME не отображается при запуске приложения - PullRequest
1 голос
/ 14 марта 2012

Я разработчик .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 ]

3 голосов
/ 14 марта 2012

Не устанавливайте 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 голосов
/ 14 марта 2012

Просто используйте одну следующую строку кода в методе startApp ()

 public void startApp(){
  display = Display.getDisplay(this);
  Form form = new Form("Calender");
  form.append(calender);
display.setCurrent(form);
  }
2 голосов
/ 14 марта 2012

Что мне здесь не хватает?

Ну, насколько я могу судить, ваш код пропускает вызов Display.setCurrent (Displayable) , который запросил бы "..., что другой Displayable объект должен быть видимым на дисплее. .. " (цитирование документации API).

Нет, когда я запускаю программу?

Это ожидаемое поведение с учетом вышеизложенного. Скорее всего, если вы вызовете display.setCurrent(form) в методе startApp, вы увидите форму.

примечание. Я также рассмотрел бы перемещение инициализации календаря DateField из конструктора в startApp. Насколько я помню, этот путь был бы более надежным.

  • также эта часть startApp выглядит очень подозрительно:
    Form form = new Form("Calender"); /* why is 'Form' here? */
    насколько я могу сказать, удаление Form имело бы гораздо больше смысла
...