Чтение онлайн

на главную

Жанры

Шрифт:

— визуализация элементов пользовательского интерфейса;

— обработка событий.

MID-леты, которые используют высокоуровневый API, не могут изменять внешний вид и впечатление от элементов, И они не могут получать информацию о реальных клавишах устройства и нажимаемых кнопках, которые служат причиной активизации команды.

Команды получают только семантическую информацию о «событии». Команда не представляет собой поведение или действие, которое осуществляется в ответ на событие. Блоки прослушивания команд задают поведение команд, определяя обработку, которая осуществляется в результате запуска команды реализацией.

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

Приоритетность команд диктуется порядком, в котором команды запускаются и посылаются в блок прослушивания команд.

Глава 5. Компоненты пользовательского интерфейса MIDP

Теперь, когда вы изучили базовые абстракции, определяемые высокоуровневым API MIDP, пришло время узнать,

как использовать компоненты пользовательского интерфейса, которые встраиваются поверх этих абстракций. В этой главе вам будут показаны основы того, как использовать компоненты пользовательского интерфейса MIDP, которые реализуют высокоуровневый API MIDP. Я не собираюсь приводить всестороннее рассмотрение каждого свойства каждого элемента пользовательского интерфейса. Эту обязанность я оставляю на справочную документацию Javadoc или справочные руководства. Тем не менее, если у вас есть базовое понятие о цели каждого элемента и о том, как они работают по своей сути, вы можете легко изучить более детальные свойства каждого элемента сами.

Иерархия Компонентов пользовательского интерфейса MIDP

Диаграмма иерархии наследования MIDP, показанная на рисунке 5.1, повторяет то, что вы уже видели на рисунке 3.7 в главе 3. Вы уже видели некоторые из компонентов пользовательского интерфейса MIDP, показанные в этой иерархии, а именно Displayable, Screen, Form и Alert.

Вы знаете, что класс Displayable определяет природу основы любого компонента, который может быть отображен, и что класс Screen определяет базовую абстракцию пользовательского интерфейса MIDP — экран. Класс Screen является первым Displayable, который вы видели, a Form был первым конкретным типом используемого экрана.

В таблице 5.1 кратко описаны все компоненты пользовательского интерфейса MIDP в пакете javax.micfoedition.lcdui.

Рисунок 5.1. Компоненты пользовательского интерфейса MIDP принадлежат либо к классу объектов Displayable, либо к классу объектов Item за исключением класса Ticker, который происходит от Object.

— абстрактный класс,

— конкретный класс

Таблица 5.1. Описание всех компонентов интерфейса пользователя MIDP

Имя класса компонента, Ul MIDP — Описание — Принадлежность к- API MIDP

Alert — Информационное всплывающее окно, может быть модальным или рассчитанным по времени — Высокоуровневый

AlertType — Определяет типы объектов Alert — Высокоуровневый

CanvasЭкран, в котором вы можете рисовать графические объекты и получать низкоуровневые события ключ/перо — Низкоуровневый

ChoiceGroup — Группа выбираемых элементов, находится в Form — Высокоуровневый

Command — Семантическая инкапсуляция событий пользовательского интерфейса — Как высокоуровневый, так и низкоуровневый

DateField — Компонент, который отображает дату и время — Высокоуровневый

Display — Класс, который извлекает структуры данных дисплея устройства — Высокоуровневый

Displayable — Прародитель всех компонентов, которые могут быть отображены — Как высокоуровневый, так и низкоуровневый

Font — Класс, предоставляющий шрифты для экранного текста — Высокоуровневый

Form — Экран, который собирает элементы для отображения — Высокоуровневый

Gauge — Тип визуального измерителя — Высокоуровневый

Graphics — Отображение контекста графических элементов устройства — Низкоуровневый

Image — Отображение изображений в формате Portable Network Graphics [PNG, переносимая сетевая графика] — Как высокоуровневый, так и низкоуровневый

Imageltem — Form, размещающий отображение изображения — Высокоуровневый

List — Список выбираемых объектов — Высокоуровневый

Screen — Абстрактный прародитель всех типов экранов — Высокоуровневый

Stringltem — Form, размещающий отображение строки — Высокоуровневый

TextBox — Многострочный, многоколонковый текстовой контейнер — Высокоуровневый

TextField — Однострочный текстовой контейнер — Высокоуровневый

Ticker — Отображение тикера — Высокоуровневый

Экраны и экранные элементы

Первый пример в этой главе показывает вам основную разницу между двумя типами компонентов пользовательского интерфейса MIDP: компонентами Displayable и компонентами Item. Иерархия наследования, изображенная на рисунке 5.1, ясно отображает Эти две категории. Иерархия Displayable заключает в себе экраны, которые вы отображаете. Иерархия Item классифицирует элементы, которые могут быть собраны в один экран. Следующие примеры демонстрируют использование различных компонентов пользовательского интерфейса MIDP. Мы объясняем их использование по мере ознакомления с каждым.

В листинге 5.1 показан файл под названием UIComponentDemo.java, который определяет исходный код новой программы, демонстрирующий использование элементов MIDP. Этот файл использует код в других файлах, которые вместе составляют полную демонстрационную программу компонента пользовательского интерфейса.

Листинг 5.1. Исходный код UlComponentDemo

import javax.raicroedition.midlet.MIDlet;

import javax.microedition.lcdui.Choice;

import javax.microedition.lcdui.Command;

import javax.microedition.lcdui.CommandListener;

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;

import javax.microedition.Icdui.List;

/**

Демонстрируется использование высокоуровневых компонентов пользовательского интерфейса MIDP. Этот демонстрационный класс создает список демонстрационных программ для выбора пользователем. Элементы в списке являются на самом деле именами первичных классов демонстрационных программ. MID-лет создает экземпляр класса, представленного среди элементов списка, выбираемого пользователем и затем выполняемого им.

*/

public class UlComponentDemo extends MIDlet

implements CommandListener

private Command exit = new Command("Exit", Command.EXIT, 1);

// Имена различных демонстрационных программ: Элементы в этом списке

// являются именами первичных классов для каждой демонстрационной

// программы, private static String [] demos =

"AlertDemo",

"DateFieldDemo",

"GaugeDemo",

"StringltemDemo", "TickerDemo",

"ImageltemDemo"

}i;

private static UIComponentDemo instance = null;

// Реальный компонент List, который отображает элементы,

// перечисленные в списке «demos» выше.

private List mainMenu = new List ("Select demo", Choice.IMPLICIT,

demos, null);

// Конструктор No-arg. public UIComponentDemo

// Обратите внимание на вызов super. Он выполняет

// конструктор no-arg в классе MID-лета. super ;

instance = this;

}

/**

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

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

*/

public static UIComponentDemo getlnstance

{

return instance;

{

public void startApp

{

Display display;

mainMenu.addCommand(exit);

mainMenu.setCommandListener(this);

*

display = Display.getDisplay(this);

display.setCurrent(mainMenu);

public void pauseApp

{

}

void quit,

destroyApp(true); notifyDestroyed;

)

public void destroyApp(boolean destroy)

(

}

public void display!)

}

Display.getDisplay(this). setCurrent(mainMenu);

}

public void commandAction(Command c, Displayabie d)

{

Displayabie displayable = null;

if (c == List.SELECT_COMMAND)

{

int index = mainKenu.getSeiectedlndex; try

{

displayable = (Displayable)

Class.forName(demos[index]). new!nstance;

if (displayable == null)

}

return;

}

Display display = Display.getDisplay(this);

display.setCurrent(displayable);

}

catch (Exception e)

{

System.out.println("Got exception here!!!");

e. printStackTrace;

return;

}

}

else if (c == exit) 1 quit;

}

}

}

Код, описанный в листинге 5.1, является первым примером, потому что он создается с использованием одного вида экранного объекта. Экран является ядром организационной основы всех MID-летов.

В листинге 5.1 определяется MID-лет. Его высокоуровневый экран является компонентом List, который отображает список вариантов, отражающих различные элементы, которые демонстрирует программа. На рисунке 5.2 показан список верхнего уровня демонстрационных приложений, которые вы можете запустить. Этот основной экран является экземпляром List.

Обратите внимание на стрелку на экране, указывающую вниз. Она указывает, что существуют еще элементы, для которых недостаточно места на экране. Если вы прокрутите немного вниз, стрелка, указывающая вниз, исчезнет, и вместо этого появится стрелка, указывающая наверх. Эти стрелки размещены на экране реализацией компонента List.

List является видом Screen, который, конечно, является Displayable, и приспосабливается к знакомой ему общей структуре приложения. Вы можете видеть в листинге 5.1, что экземпляр List является отображаемым в настоящее время, по существу это объект, который получает события вызова команды. Сам MID-лет является блоком прослушивания таких событий, регистрируя себя как CommandListener для этих событий. Он реализует интерфейс CommandListener, а также определяет метод commandAction .

Поделиться:
Популярные книги

Последний попаданец

Зубов Константин
1. Последний попаданец
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Последний попаданец

Шипучка для Сухого

Зайцева Мария
Любовные романы:
современные любовные романы
8.29
рейтинг книги
Шипучка для Сухого

Хочу тебя любить

Тодорова Елена
Любовные романы:
современные любовные романы
5.67
рейтинг книги
Хочу тебя любить

СД. Том 17

Клеванский Кирилл Сергеевич
17. Сердце дракона
Фантастика:
боевая фантастика
6.70
рейтинг книги
СД. Том 17

Я же бать, или Как найти мать

Юнина Наталья
Любовные романы:
современные любовные романы
6.44
рейтинг книги
Я же бать, или Как найти мать

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Идеальный мир для Лекаря 2

Сапфир Олег
2. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 2

Сумеречный стрелок 7

Карелин Сергей Витальевич
7. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный стрелок 7

Александр Агренев. Трилогия

Кулаков Алексей Иванович
Александр Агренев
Фантастика:
альтернативная история
9.17
рейтинг книги
Александр Агренев. Трилогия

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Титан империи 4

Артемов Александр Александрович
4. Титан Империи
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Титан империи 4

Воевода

Ланцов Михаил Алексеевич
5. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Воевода

Тринадцатый IV

NikL
4. Видящий смерть
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Тринадцатый IV

Адмирал южных морей

Каменистый Артем
4. Девятый
Фантастика:
фэнтези
8.96
рейтинг книги
Адмирал южных морей