Программирование мобильных телефонов на Java



6.2.4. Класс Stringltem



Рассматриваемый класс позволяет интегрировать в форму строку текста, состоящую из двух частей - метки и заданного текста. Строка текста, выводимая на экран, не может быть изменена или отредактирована - это статический текст, жестко заданный в параметрах конструктора класса StringItem при создании объекта этого класса. Имеется два конструктора класса StringItem, разберем их устройство.

public  StringItem(String  label,String text)


Параметры конструктора класса Stringltem:

  •  label - метка для строки текста;
  •  text - строка текста.


Второй конструктор класса Stringltem имеет три параметра и позволяет выбирать способ отображения текстовой информации.

public  Stringltem(String label, String text, int appearanceMode)


Параметры конструктора Stringltem:

  •  label - метка для строки текста;
  •  text - строка текста;
  •  appearanceMode - этот параметр содержит большое количество предустановленных значений, используя которые вы сможете отформатировать текст, например, поместив его в кнопку и создав при этом команду, реагирующую на нажатие данной кнопки.


Значения, устанавливающие выше перечисленные действия содержаться в пакете javax.microedition.lcdui.Item, рассмотрим несколько из них.

  •  BUTTON - создает кнопку с текстом;
  •  HYPERLINK - создает гиперссылку;
  •  LAYOUT_BOTTOM - выравнивание к нижней части экрана;
  •  LAYOUT_CENTER - выравнивание по центру экрана;
  •  LAYOUT_TOP - выравнивание к верхней части экрана;
  •  LAYOUT_LEFT - выравнивание к левой части экрана;
  •  LAYOUT_RIGHT - выравнивание к правой части экрана.


При создании примера к классу Stringltem обязательно воспользуемся некоторыми значениями для параметра appearanceMode в конструкторе класса Stringltem.

Методы класса Stringltem

  •  int getAppearanceMode () - возвращает заданный способ отображения текста на экране;
  •  Font getFont () - получает шрифт текста;
  •  String getText () - получает текст для класса Stringltem;
  •  void setFont(Font font) - устанавливает шрифт текста;
  •  void setPref erredSize (int width, int height) -задает ширину и высоту текста;
  •  void setText (String text) - устанавливает текст для класса StringItem.


Пример, который будет предложен для класса StringItem, создаст форму при помощи класса Form и разместит в форме текст. Первая строка текста выполнена в виде простой статической надписи, вторая сделана как гиперссылка. Выделив эту строку текста и нажав кнопку на телефоне перейти, вы попадете на экран с новой формой. А последняя третья строка текста выполнена просто в виде кнопки. Рассмотрим листинг 6.4 иллюстрирующий работу данного примера.

/ * *
Листинг 6.4 Класс Stringltem
*/
import javax.microedition.midlet.*;
 import javax.microedition.Icdui.*;
public class MainClassStringltem extends MIDlet
implements CommandListener, ItemCommandListener
{
// команда выхода из приложения
private Command exitMidlet = new Command("Выход", Command.EXIT, 0);
// команда перехода по нажатию кнопки private
Command perexodButton = new Command("Дальше",Command.ITEM, 1);
 // команда перехода по гиперссылке
private Command perexodHyperlink = new Command("Перейти", Command.ITEM, 1);
// команда возврата в основное окно private
Command vozvrat = new Command("Назад", Command.BACK, 1);
// объект класса Form private Form myform,
// объект mydisplay представляет экран телефона private Display mydisplay;
public void startApp()
{
mydisplay = Display.getDisplay (this) ;
myform = new Form("Класс Stringltem");
Stringltem si = new Stringltem("Метку", "Текст");
myform.append(si);
// создать гиперссылку
Stringltem s2 = new Stringltem("Гиперссылка", "www.dmk.ru",Item.HYPERLINK);
s2.setDefaultCommand(perexodHyperlink);
s2.setltemCommandListener(this);
myform.append(s2);
// создать текст в виде кнопки
Stringltem s3 = new
Stringltem("Кнопка","Опции",Item.BUTTON);
s3.setDefaultCommand(perexodButton);
s3.setltemCommandListener(this);
 myform.append(s3);
myform.addCommand(exitMidlet);
myform.setCommandListener(this);
mydisplay.setCurrent(myform);
 }
protected void destroyApp(boolean unconditional) {}
protected void pauseAppO {}
// обработчик класса ItemCommandListener
public void commandAction(Command c, Item i)
{
// переход в окно опций if (с = = perexodButton)
 {
Form f1 = new Form("Опции");
f1.append("Необходимые Опции");
f1.addCommand(exitMidlet) ;
f1.addCommand(vozvrat);
f1.setCommandListener(this) ;
mydisplay.setCurrent(f1) ;
}
// переход по гиперссылке
 if (c = = perexodHyperlink)
{
Form f2 = new Form("Издательство ДМК");
f2.append("Сайт издательства ДМК");
f2.addCommand(exitMidlet);
f2.addCommand(vozvrat);
f2.setCommandListener(this);
mydisplay.setCurrent(f2);
}
 }
public void commandAction(Command c, Displayable d)
{
// выход из приложения
if(с == exitMidlet)
{
destroyApp(false);
notifyDestroyed();
}
//   возврат  в основную форму
if(с  = = vozvrat)   mydisplay.setCurrent(myform);
}
}


В коде листинга 6.4 для наглядности не использовался конструктор основного класса мидлета MainClassStringltem, но добавлялся, как уже упоминалось новый интерфейс ItemCommandListener для установки обработки команд перехода в приложении. В методе startApp () происходит создание пустой формы для класса Form и интеграция класса Stringltem. В строке кода:

Stringltem si = new Stringltemf"Метку", "Текст");


Создается простой статический текст и выводится на дисплей телефона. Следующий блок кода:

Stringltem s2 =new Stringltem("Гиперссылка",
 "www.dmk.ru",Item.HYPERLINK);
s2.setDefaultCommand(perexodHyperlink);
s2.setItemCommandListener(this) ;
myform.append(s2) ;
Stringltem s3 = new
Stringltem("Кнопка","Опции"»,Item.BUTTON);
s3.setDefaultCommand(perexodButton);
s3.setltemCommandListener(this);
myform.append(s3);


формирует текст на экране телефона, назначив для него обработчик событий при помощи метода setltemCommandListener(). Можно получить текст в виде активной ссылки. При создании объекта s2 класса Stringltem использовался конструктор с тремя параметрами. Последний параметр этого конструктора как раз и отвечает за вид создаваемой ссылки. Была создана гиперссылка с помощью константы HYPERLINK. Блоком кода с объектом s3 уже создавалась кнопка. Эта кнопка является так же простым статическим текстом, но оформленным в виде прямоугольной кнопки. Объекту s3 так же назначается обработчик событий методом setltemCommandListener (), благодаря чему и получается активная ссылка. Выбрав ее можно перейти в нужное место в приложении.

Теперь наша программа имеет два одноименных обработчика событий с разными параметрами, представленными двумя интерфейсами CommandListener и ItemCommandListener. Обработчик событий созданный при помощи метода commandAction (Command с, Item i), следит за двумя активными ссылками, выполненными в виде гиперссылки и кнопки. Выбрав одну из активных ссылок и воспользовавшись соответственной командой перехода perexodButton - для кнопки и реrexodHyperlink, вы попадете на экран с новой формой и информационной надписью. Оба новых экрана созданы классом Form, где так же имеются две команды: exitMidlet -для выхода из приложения и vozvrat — для возврата в основное окно. Эти две команды обрабатываются своим методом commandAction(Command с, Displayable d) интерфейса CommandListener. Для того, чтобы создать активную ссылку, необходимо воспользоваться интерфейсом ItemCommandListener, реализовав метод commandAction () для обработки необходимых событий. Рис. 6.6 показывает экран эмулятора с несколькими элементами класса Stringltem.



Рис. 6.6. Элементы класса Stringltem

Назад Начало Вперед