Рассматриваемый класс позволяет интегрировать в форму строку текста, состоящую из двух частей - метки и заданного текста. Строка текста, выводимая на экран, не может быть изменена или отредактирована - это статический текст, жестко заданный в параметрах конструктора класса StringItem при создании объекта этого класса. Имеется два конструктора класса StringItem, разберем их устройство.
public StringItem(String label,String text)
Параметры конструктора класса Stringltem:
Второй конструктор класса Stringltem имеет три параметра и позволяет выбирать способ отображения текстовой информации.
public Stringltem(String label, String text, int appearanceMode)
Параметры конструктора Stringltem:
Значения, устанавливающие выше перечисленные действия содержаться в пакете javax.microedition.lcdui.Item, рассмотрим несколько из них.
При создании примера к классу Stringltem обязательно воспользуемся некоторыми значениями для параметра appearanceMode в конструкторе класса Stringltem.
Пример, который будет предложен для класса 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.