Первыми двумя строками метода
UIComponentDemo demo = UIComponentDemo.get Instance ();
Display display = Display.getDisplay(demo);
Эти строчки используют ту же идиому для легкого получения ссылки на MID-лет. Класс UIComponentDemo определяет этот статический метод, который освобождает вас от вынужденного кодирования следующей строки каждый раз, когда вам понадобится создать ссылку на дисплей:
Display.getDisplay(UIComponentDemo.getMIDiet());
Конечно, это не единственный способ осуществлять экранную навигацию. Другой метод заключается в поддержке набора ссылок на объекты
Безотносительно к методу, который вы выбрали, смысл в том, что ваша программа должна «знать» следующий экран для отображения. Иногда вы захотите вернуться назад к предыдущему экрану. В других случаях вы можете захотеть перейти на два или более экрана назад или к некоторому произвольному экрану. Вы можете даже использовать комбинацию вышеописанных подходов для выполнения нужной вам навигации.
В предыдущих примерах описывались некоторые компоненты, которые создают основу всех приложений MIDP. В оставшейся части главы вы увидите остальные компоненты пользовательского интерфейса.
На главном экране демонстрационного приложения UlComponent (смотри http://www.phptr.com/) вторым элементом списка является демонстрационная версия класса DateField. На рисунке 5.1 показано, что DateField является разновидностью Item; как таковой, он должен быть частью Form для того, чтобы быть отображаемым. В листинге 5.5 показан исходный код файла DateFieldDemo.java.
import Java.util.Date;
import Java.util.Calendar;
import Java.util.TimeZone;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.DateField;
import javax.microedition.lcdui.Displayable;
import javax.
microedition.lcdui.Form;
/**
Демонстрирует использование класса DateField пользовательского интерфейса MIDP.
@смотри javax.microedition.Icdui.DateField
public class DateFieldDemo extends Form implements CommandListener
private Command back = new Command('Back', Command.BACK, 1);
private static Displayable instance;
private DateField date = new DateField('Date/Time in GMT',
DateField.DATE_TIME, TimeZone.getDefault ());
/**
Конструктор.
*/
public DateFieldDemo()
}
super ('DateField Demo');
Calendar cal = Calendar.getlnstance();
date.setDate(cal.getTime());
append(date); addCommand (back); setCcmmar.dListener (this);
instance = this;
}
/**
Возвращает один экземпляр этого класса. Вызов этого метода перед созданием объекта возвращает пустой. указатель.
@Возвращает экземпляр этого класса.
*/
public static Displayable getlnstance ()
{
return instance;
}
public void commandAction(Command c, Displayable d)
{
if (c == back)
{
UI ComponentDemo.get Instance(). display();
}
}
}
Прежде всего, обратите внимание, что DateFieldDemo дополняет класс Form. Конструктор просто