Select your language:

Home Главная | Registration Регистрация | Login Вход

Menu Меню сайта
Statistics Статистика

Total online: Онлайн всего: 1
Guests: Гостей: 1
Members: Пользователей: 0
Study entry Форма входа
Логин:
Пароль:
Забыл пароль | Регистрация

Ссылки:

Вся программа основывается на классе MainClassChoiceGrop. К команде выхода exitMidlet добавлены еще две команды обработки событий - это vozvrat и vibor. Команда vozvrat возвращает пользователя обратно в главное окно приложения, в которое он попадает при запуске программы. С помощью команды vibor, происходит выбор заданных действий, то есть отклик программы на выбранный элемент группы. Как мы уже договорились, каждый элемент группы POPUP (всего их будет четыре), должен привести пользователя в свой экран, установленный с помощью класса Form. Далее в листинге 6.1 идет объявление необходимых объектов для классов Form, Choice Grop и Display. После конструктора идет строка кода создающая текст для элементов группы:

private StringП mygroup = {"Флаг 0", "Флаг 1", "Флаг 2", "Флаг 3"};

С помощью переменной mygroup создается массив текстовых данных для инициализации всей группы элементов. После создания, переменной mygroup следует код метода startApp i , . Первой строкой кода в методе startApp () инициализируется объект groupPopup класса Choice Group. Конструктор этого класса мы подробно уже рассматривали, но небольших пояснений требуют два последних параметра. Оба параметра могут быть представлены в виде массива данных. Предпоследний параметр конструктора класса Choice Group, инициализирующий объект mygroup, создает четыре строки текста в виде выпадающего меню (поскольку мы использовали значение POPUP во втором параметре конструктора класса ChoiceGroup). Все четыре строки текста и есть группа, элементов, дающая пользователю выбор конкретных действий. Последний параметр в конструкторе класса ChoiceGroup служит для загрузки каждому элементу группы своего изображения или иконки, которая будет отображаться слева от текста, назначенного для каждого элемента группы. Поскольку изображения вы еще загружать не умеете (чему мы, безусловно, научимся), то надо выставить это значение в null. После инициализации объекта groupPopup создается форма

на основе класса Form, добавляются команды выхода и выбора, и самое главное, происходит встраивание объекта groupPopup класса ChoiceGroup в форму класса Form. После чего текущий экран дисплея отображается посредством строки кода:

mydisplay.setCurrent(myform);

Последующие действия всей программы сводятся к обработке событий возникающих при нажатии клавиш телефона. Если посмотреть на эту программу на экране телефона, то мы увидим на дисплее строку текста и выпадающее меню с четырьмя элементами. Выбрав один элемент из группы с помощью кнопки Select, на правой клавише телефона мы получим команду Выбрать, благодаря -которой можно будет перейти в новое окно, заданное для выбранного элемента группы.

После того, как произведен выбор элемента группы и нажата клавиша с командой Выбор, программа попадает в обработчик событий этой команды, назначенный для| переменной vibor. Далее используется .метой getSelectedIndex{) класса ChoiceGroup, с помощью которого происходит получение индекса выбранного элемента группы и помещение результата в переменную i. После чего происходит сравнение полученного индекса с четырьмя значениями, заданными для каждого элемента. Соответственно, после совпадения индекса и значения выбранного элемента, происходят действия заданные для этого выбора. В примере происходит создание нового экрана с информационной надписью о выбранном элементе группы, добавлением команд выхода из приложения и возврата в главное окно программы. В этой программе, в ответ на действия по выбору элемента группы, создается новый экран с объектом класса Form. В ваших программах это могут быть любые другие события, необходимые для решения конкретных задач.

6.2.2. Класс DateField

Это, пожалуй, самый простой класс из всех имеющихся в иерархии класса Item. С помощью класса DateField возможно произвести установку необходимой даты и времени. Используемый интерфейс для отображения даты и времени элементарный и практически все действия по установке заданных параметров даты и времени уже реализованы программно. На рис. 6.4 изображен эмулятор телефона, отображающий текущее время.

В составе класса Date Field имеется в наличии два конструктора, для создания объектов этого класса, рассмотрим их. Первый конструктор:

public DateField(String label, int mode);

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

□ label - строка текста;

□ mode - с помощью этого параметра конструктора, устанавливается, какой именно из компонентов класса DateField будет воссоздан на экране. Имеется возможность вывести дату с помощью значения DATE, и время,

Класс Item

Fiic6.4. Текущее время на экране телефона

задав значение TIME. Также можно пользоваться комбинированным способом DATE_TIME для отображения обоих компонентов вместе.

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

public DateField (String label, int mode,

TimeZone time Zone)

Параметры конструктора KJiaccaDateFie 1 d:

□ label - строка текста;

□ mode - установка заданных компонентов ' класса DateField;

Q time Zone это объект класса TimeZone, С помощью которого можно определить часовой пояс. Например:

TimeZone v = TimeZone.getTimeZone ("GMT") ,-

Класс DateField содержит всего четыре метода:

□ Date getDate () - возвращает текущую дату;

О void setDate(Date date) - устанавливает новую дату;

□ int getlnputMode () - получает'установленные компоненты DATE, TIMEIDIIIDATA_TIME;

□ void setlnputMode (int mode) - устанавливает компоненты DATE, TIMEITJIIlDATEjriME.

' Перейдем к программному коду и рассмотрим пример, реализующий вывод на экран даты и времени одновременно. Все, что сейчас от нас требуется - это написание кода основного класса мидлета, создание пустой формы и встраивание в эту форму класса DateField. Также необходимо проследить наличие команды выхода из приложения. Все остальное за нас сделает Java 2 ME, создав кнопки перехода и команду сохранения настроек даты и времени. В листинге 6.2 дается полный код примера к этому разделу, на компакт-диске исходный код на-' ходится в папке \Code\Listing6_2\src. -

/**

Листинг б. 2

Класс DateField - .

*/

import javax.microedition.midlet.*; import javax.microedition.ledui.*;

В примере создан класс MainClassDateField, соответствующий названию разбираемого класса. Сам по себе пример очень легкий в силу простоты реализации самого класса DateField. Первоначально создается объект dt для класса DateField, после этого происходит его инициализаций.в методе startApp (). Создается форма классом Form и объект dt интегрируется в эту форму. Все остальное, а именно: циферблат и календарь, показанные на рис. 6.4, создаются автоматически с помощью эмулятора телефона при выборе одного из элементов класса. В нашем примере был создан объект dt класса DateField, но можно было этого и не делать, а обойтись, например такой простой записью:

Form f = new Form (new DateField ("Дата и Время", DateField.DATE TIME);

*v

Такая запись используется иногда в профессиональных программах, где это действительно очевидно и не затруднит чтения и понимания всей программы в целом.

После того, как вы откомпилируете ЭТОТ пример и запустите приложение, на экране появятся два элемента с надписями time и date. Выбрав один из элементов и нажав на кнопку Select, вы попадете, в зависимости от выбора, на экран с календарем или временем, изображенным на рис. 6.4. С помощью джойстика или клавиш перемещения, можно установить необходимые параметры для обоих элементов.

С помощью этого класса можно создать заданный по размеру контейнер, в который помещается редактируемый текст. Этот класс обычно используется в создании адресных книг или полей для ввода текста. Кроме текста также можно размещать любую числовую информацию. В классе TextField существует всего один конструктор с четырьмя параметрами, рассмотрим этот конструктор.

' public TextField (String label, V

String text, int maxSize, int constraints)

ПараметрыконструктораклассаТех t F i e 1 d:

О label - метка, название для редактируемого поля;

О text - строка текста. Поле может и не содержать текст;

□ maxSize - максимальное количество символов в поле;

□ constraints — входное ограничение, с помощью которого можно задавать, что именно должно принимать данное поле, например цифры, буквы или символы, задается ограничение с помощью следующих констант:

□ static int ANY - можно вводить любой текст;

□ static int DECIMAL - можно вводить дробные числа;

□ static int EMAILADDR - используется для адреса электронной почты;

6.2.3. Класс TextField

О static int NUMERIC - для ввода только целого числа;

□ static int PASSWORD - используется при вводе пароля;

О static int PHONENUMBER - для ввода телефонного номера;

□ static int URL - адрес сайта в Интернет.

Как видите, предусмотрены практически все варианты, остается только подставлять требуемые значения и наслаждаться простотой программирования под Java 2 MR Использование вышеперечисленных директив в Java 2 ME традиционно и, например, для ввода адреса сайта может быть следующая запись:

TextField t.f = new TextField ("Адрес", "" ,20 .TextField.URL)

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

Класс TextField содержит четырнадцать методов, некоторые из них мы сейчас рассмотрим.

□ void delete (int offset, int length) - удаляет текст или заданный символ;

□ int getCaretPosition О — ^получает позицию каретки для печати символов;

О int getChars (char [ ] data) - копирует текст в символьный массив данных;

□ int getMaxSize() - определяет максимально доступное количество символов для размещения в классе TextField;

□ String getStringO - получает строку текста;

, □ void insert (char [] data, int offset, int length, int p о sitio n) - вставляет в заданную позицию массив символьных данных;

□ void insert (String src, int position) - вставляет в заданную ■ позицию строку текста;

□ void setChars (char [ ] data, int offset, int length) -устанавливает из символьного массива данные в заданную позицию, при этом заменяя предыдущие данные;

О int size () - определяет размер содержимого в TextField на данный момент.

Теперь перейдем непосредственно к примеру, реализующему возможности класса TextField. Создадим пустую форму, и вставим в нее поля в виде адресной книги. В листинге 6.3 дается код всего примера.

Листинг б.3 Класс TextField

import javax.microedition.midlet. *,-import javax.microedition.lcdui.*;

public class MainClassTextField extends MIDlet

public void commandAction (Command с, Displayable d)

implements CommandListener

{

// команда выхода из приложения private Command exitMidlet = new Command( " Выход" , Command. EXIT, 0) ,-

// объект класса Form ♦private Form myform;

// объект mydisplay представляет экран телефона' priva t e Di splay mydi splay;

publicMainClassTextField()

mydisplay = Display.getDisplay(this) ;

}

public void startApp() {

// создаем форму при помощи объекта Form myform = new Form( "Класс TextField") ; // добавить в форму поле для текста myform. append (newTextField (

"Введите текст; " ,"" ,20, TextField .ANY) ) ; // добавить в форму поле для пароля myform.append(newTextField (

. "Введитепароль: ", " " ,20 , TextField. PASSWORD) ) ; // добавить в форму поле для e-mail myform.append(newTextField (

"ВведитеЕ-mail: " , " " ,20, TextField.EMAILADDR)) ; J J добавить в форму поле для UEL . myform.append(newTextField(

"ВведитеШЬ: " , " " ,20,TextField.URL) ) ; // добавить в форму поле для телефонного номера myform.append(newTextField(

"Телефонный ном ер2 0, TextField -PHON ENUMBER) ) туform.addCommand(exitMidlet) myform. setCommandListerlf this) ;. mydisplay .setCurrent (myform) ;

}

.public void pauseApp() {)

public void destroyApp (booleanunconditional) . {}

// выход из приложения if(с == exitMidlet) {

destroyApp(false); notifyDestroyed();

}

J }

Пример представляющий возможности класса TextField также находится на компакт-диске в папке \Code\ Listing6_3\src. В листинге 6.3 создается пустая форма при помощи класса Form и вставляется несколько текстовых контейнеров для пароля, адреса электронной почты, веб-сайта и любой другой комбинации символов и цифр. Возьмем для наглядности первую строку кода, создающую текстовое поле для размещения символов и цифр:

myform.append(new TextField

("Введите текст:","" ,20,TextField. ANY) ) ,-

Здесь используется упрощенная запись без создания объекта класса TextField. Первый параметр конструктора TextField задает информационную строку текста - метку, поясняющую назначение данного текстового ПОЛЯ. В следующий параметр конструктора класса TextField, а точнее в переменную, отвечающую за текстовый массив данных, пользователь будет вводить необходимую информацию. Значение этого параметра пустое, но возможно поместить любой текст, который в последствии можно редактировать. Числовое значение 20 задает длину или количество введенных символов. Последний параметр исполь-.

зует константу ANY, дающую возможность вводить любую

комбинацию символов и цифр.

. Все созданные поля в листинге 6.3 используют рассмотренную выше конструкцию программного кода и только в последнем параметре конструктора TextField, значение варьируется для пароля, e-mail, веб-сайта и телефонного номера. Задавая различные значения последнему параметру при создании объекта этого класса, вы можете создать набор необходимых полей. На рис. 6.5 изображен эмулятор, показывающий несколько полей класса TextField.

6.2.4. Класс Stringltem

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

Рис. 6.5. Поля класса TextField

Класс'Item

текст, жестко заданный в параметрах конструктора класса Stringltemnpn создании объекта этого класса. Имеется два конструктора класса Str ingltem, разберем их устройство.

public StringItem(String label,String text) :

Параметры конструктора класса Stringltem: Q label - метка для строки текста;

□ text - строка текста.

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

public Stringltem(String label.

String text, I

int appearanceMode)

Параметры конструктора Stringltem: Q label - метка для строки текста; Q text — строка текста;

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

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

Q IAYOUTBOTTOM - выравнивание к нижней части экрана; -

□ LAYOUTC ENTER - выравнивание по центру экрана; Q LAYOUT_TOP - выравнивание к верхней части экрана; Q LAYOUT_LEFT - выравнивание к левой части экрана;

Q LAYO UTRIGHT - выравнивание к правой части экрана.

При создании примера к классу S tringltem обязательно воспользуемся некоторыми значениями для параметра appearanceMode в конструкторе класса Stringltem. ■ Методы класса Stringltem G int getAppearanceMode () - возвращает заданный способ отображения текста на экране; Q Font getFont () - получает шрифт текста; Q String getText() - получает текст для класса Stringltem;

□ void setFont(Font font) - устанавливает шрифт текста;'

Q void setPreferredSize(int width, int height) -задаетширину и высоту текста;

Q void setText (String text) - устанавливает текст для класса Stringltem.

Листинг 6.4 Класс Stringltem * /

import javax.microedition.midlet. *,-import javax.microedition.lcdui.*;

public class MainClassStringltem extends MIDlet implements CommandListener, ItemCommandListener

// команда выхода из приложения

private Command exitMidlet = new Command("Выход"r 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);

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


Для перехода к следующей странице статьи перейдите по вы подающему меню
Basket Корзина
Your basket is empty Ваша корзина пуста
'); $(el).append(g); $(g).show(); } _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'clear'}}); return false; } function removeBasket(id){ if(lock_buttons) return false; else lock_buttons = 1; $('#basket-item-'+id+' .sb-func').removeClass('remove').addClass('myWinLoadS').attr('title',''); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'del', 'id':id}}); return false; } function add2Basket(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-basket').attr('disabled','disabled'); $('#'+pref+'-'+id+'-basket').removeClass('done').removeClass('err').removeClass('add').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value')}}); return false; } function buyNow(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-buynow').attr('disabled','disabled'); $('#'+pref+'-'+id+'-buynow').removeClass('done').removeClass('err').removeClass('now').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value'), 'now':1}}); return false; } //-->
Search Поиск
Calendar Календарь
«  March Март 2011  »
Mon Пн Tues Вт Wed Ср Thurs Чт Fri Пт Sat Сб Sun Вс
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archive records Архив записей

Ссылки:

Rambler's Top100 Все для дома - Бытовая техника, опубликовать информацию о фирме
QLE 88x31

раскрутка сайта в интернете Рейтинг сайтов Товары / Услуги

Copyright MyCorp © 2011 Создать сайт бесплатно

Copyright MyCorp © 2011