// Это необходимо/ чтобы другие экраны могли ссылаться

// на экземпляр этого класса, private static Displayable instance;

/**

Конструктор.

*/

public AlertDemo()

{

'super ('Build alert');

type = buildAlertTypeSelection ();

tPref = buildTimeoutPrefPrompt();

append(type); appendftPre();

addCommand(go); addCommand(back);

setCommandListener(this); instance = this;

}

/**

Возвращает единственный экземпляр этого класса. Вызов этого метода перед созданием объекта возвращает Пустой указатель.

@возвращает экземпляр этого класса.

*/

static Displayable getlnstance ()

{

return instance;

}

private ChoiceGroup buildAlertTypeSelection ()

{

// He работает, если это Choice.IMPLICIT. Смотри документацию Choice.

// Тип IMPLICIT действителен только для объектов List,

return new ChoiceGroup ('Alert Type', Choice.EXCLUSIVE, elements, null);

}

private TextField buildTimeo-utPref Prompt ()

}

String MAX_TIMEOUT_VALUE = «5»; int MAX_SIZE = 8;

return new TextField('Timeout (sec.)', MAX_TIMEOUT_VALUE,

MAX_SIZE, TextField.NUMERIC);

}

public void comraandAction(Command c, Displayable d)

{

UIComponentDemo demo = UIComponentDemo.getlnstance();

Display display = Display.getDisplay(demo); int timeSec; int timeMillis;

if (c == go)

// Уведомления не принимают определенные приложением команды.

String title = elements[type.getSelectedlndex()]; 1;

Alert alert = new Alert (title);

alert.setString('A ' + title + ' alert'); timeSec = Integer. parselnt(tPref.getString());

timeMillis = timeSec * 1000; if (timeMillis <= 0)

(

timeMillis = Alert.FOREVER;

}

alert.setTimeout(timeMillis);

display.setCurrent(alert, AlertDemo.getlnstance());

}

if (c == back)

(

UIComponentDemo.getlnstance(). display ();

}

)

}

Когда вы будете экспериментировать с этим приложением, обратите внимание, что вы можете прокрутить List вверх и вниз, выделяя различные элементы List, но программного выбора событий не осуществляется. Подобным образом на экране Build Alert (Создание уведомления) вы можете прокручивать и многократно выбирать элементы ChoiceGroup без активации какого-либо действия.

В обоих случаях событий не генерируется, пока вы не вызовете активацию команды. На экране List вы должны нажать на кнопку выбора Select, чтобы перейти к экрану Build Alert (Создать уведомление). Когда вы окажетесь на экране Build Alert (Создать уведомление), вы должны выбрать экранную кнопку Go, чтобы просмотреть отображенный Alert. Изменение выбора в любой реализации Choice не активирует какую-либо Command в компоненте.

Оба экрана, изображенные на рисунках 5.2 и 5.3, показывают наборы элементов, из которых пользователь может сделать выбор. Оба компонента List и ChoiceGroup реализуют интерфейс javax.microedition.ldcui.Choice, который указывает характеристики поведения компонентов, поддерживающих выбор одного или более своих элементов. Интерфейс Choice определяет три константы:

— IMPLICIT (Неявный): выбирается элемент, на котором в настоящее время сфокусировано внимание.

— EXCLUSIVE (Исключающий): может быть выбран один-единственный элемент.

— ULTIPLE (Множественный): могут быть выбраны несколько элементов.

Только объекты List могут устанавливать активацию IMPLICIT. Когда вы активизируете клавишу выбора Select устройства при неявном List, какой бы элемент List и был бы выделен в данный момент, он будет выбран. Листинг 5.1 демонстрирует эту неявную команду. ChoiceGroup не может быть неявным. Конструктор ChoiceGroup сбрасывает IllegalArgumentException, если вы пытаетесь создать его экземпляр с типом Choice.IMPLICIT.

Есть еще один тип информации, которая может быть собрана из этого неявного List. Ранее я говорил, что событие команды посылается в Displayable в ответ на нажатие пользователем кнопки Select на устройстве. Тип этой команды, однако, отличается от любого из типов, которые определяет класс Command.

Класс List определяет особый объект Command, List.SELECT_COMMAND. Активация списка IMPLICIT генерирует эту особую команду и посылает ее в блок прослушивания команд без какой-либо явной операции выбора, осуществляемой пользователем. Истинная цель этой команды заключается в том, чтобы дать возможность методу блока прослушивания commandAction() распознать активацию операции выбора устройства. В листинге 5.3 показано, как метод UIComponentDemo.commandAction()

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

0

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

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