В этой главе вы узнаете, как использовать низкоуровневый программный интерфейс приложения MIDP, который является одним из двух программных интерфейсов приложения компонентов пользовательского интерфейса MIDP. О первом API MIDP, высокоуровневом, вы узнали в главе 4. Низкоуровневый API дает вам возможность делать то, что в высокоуровневом API осуществлять было невозможно:
получать низкоуровневую информацию о событиях (такую, как информация о нажатии клавиш), которую получает ваш компонент; определять внешний вид своего компонента пользовательского интерфейса. Два класса составляют определение низкоуровневого API: javax.microedition.lcdui. Canvas; javax.microedition.lcdui.Graphics.
На рисунке 6.1 воспроизводится часть диаграммы иерархии наследования MIDP, приведенной на рисунке 5.1. Вы можете видеть, что класс Canvas происходит из Displayable.
Однако, поскольку класс Canvas не является типом Screen, он не использует ни одной абстракции, определяемой иерархией Screen, например, добавление заголовка или тикера невозможно.
Класс
В компоненте
Однако, в дополнение к обработке высокоуровневых команд, класс
Реализация MIDP передает информацию о событии низкого уровня объекту
Название метода — Описание
protected void keyPressed(int KeyCode) — Клавиша была нажата и отпущена
protected void keyReleased.(int KeyCode) — Клавиша была отпущена
protected void keyRepeated(int KeyCode) — Клавиша была нажата несколько раз
protected void pointerPressed(int x, int y) — Указатель был нажат
protected void pointerDragged(int x, int y) — Указатель был перемещен
protected void pointerReleased(int x, int y) — Указатель был отпущен
protected abstract void paint(Graphics g) — Произошел запрос Canvas на перерисовку
Для выполнения обработки событий низкого уровня ваш конкретный подкласс
В листингах 6.1 и 6.2 представлена простая схема обработки команд и событий в Canvas. Код в листинге 6.1 является кодом MID-лета для демонстрационной программы, большая часть которой выглядит знакомо. Код в листинге 6.2, однако, создает подкласс Canvas — Displayable, который согласно коду, показанному в листинге 6.1, размещается на экране.