Первыми двумя строками метода commandAction () являются следующие:

UIComponentDemo demo = UIComponentDemo.get Instance ();

Display display = Display.getDisplay(demo);

Эти строчки используют ту же идиому для легкого получения ссылки на MID-лет. Класс UIComponentDemo определяет этот статический метод, который освобождает вас от вынужденного кодирования следующей строки каждый раз, когда вам понадобится создать ссылку на дисплей:

Display.getDisplay(UIComponentDemo.getMIDiet());

Конечно, это не единственный способ осуществлять экранную навигацию. Другой метод заключается в поддержке набора ссылок на объекты Displayable. Вы можете поместить объект Displayable в набор, когда вы сделаете его текущим отображаемым объектом. Чтобы перейти назад к предыдущему экрану, вытолкните его из стека и установите его текущим Displayable.

Безотносительно к методу, который вы выбрали, смысл в том, что ваша программа должна «знать» следующий экран для отображения. Иногда вы захотите вернуться назад к предыдущему экрану. В других случаях вы можете захотеть перейти на два или более экрана назад или к некоторому произвольному экрану. Вы можете даже использовать комбинацию вышеописанных подходов для выполнения нужной вам навигации.

Другие компоненты Item

В предыдущих примерах описывались некоторые компоненты, которые создают основу всех приложений MIDP. В оставшейся части главы вы увидите остальные компоненты пользовательского интерфейса.

DateField

На главном экране демонстрационного приложения UlComponent (смотри http://www.phptr.com/) вторым элементом списка является демонстрационная версия класса DateField. На рисунке 5.1 показано, что DateField является разновидностью Item; как таковой, он должен быть частью Form для того, чтобы быть отображаемым. В листинге 5.5 показан исходный код файла DateFieldDemo.java.

Листинг 5.5. Поскольку экраны являются отображаемыми, метод getlnstanceO должен возвращать экранный объект некоторого вида. Этот возвращает экземпляр Form

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. Конструктор просто

Вы читаете Платформа J2Me
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату