Рисунок 5.2. Изображение главного экрана UIComponentDemo. Элементы являются названиями основных классов для каждой демонстрационной программы

Рисунок 5.3. Главный экран демонстрационной программы уведомлений является формой, которая объединяетTextField и ChoiceGroup

Листинг 5.2. Уведомления являются экранами, но они не могут содержать объекты Command. Вы должны указать Displayable, который должен быть показан, когда уведомление будет недоступно

import javax.microedition.lcdui.Alert;

import javax.microedition.lcdui.Choice;

import javax.microedition.lcdui.ChoiceGroup;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.lcdui.Form;

import javax.microedition.Icdui.TextField;

/**

Демонстрирует использование объектов Alert.

*/

public class AlertDemo extends Form implements CommandListener

{

private Command go = new Command("Go", Command.SCREEN, 1);

private Command back = new Command ("Back", Command.BACK, 1);

private ChoiceGroup type; private TextField tPref;

private String [] elements =

{

"Alarm", «Confirmation», «Error», «Information», "Warning");

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

// на экземпляр этого класса, 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 в компоненте.


Логин
Пароль
Запомнить меня