Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Дейтел Х.М. -> "Технологии профаммирования на Java 2 Книга 3" -> 128

Технологии профаммирования на Java 2 Книга 3 - Дейтел Х.М.

Дейтел Х.М. , Дейтел П.Дж., Сантри С.И. Технологии профаммирования на Java 2 Книга 3 — М.: Бином-Пресс, 2003. — 672 c.
ISBN 5-9518-0051-Х
Скачать (прямая ссылка): tehprogrammjava220033.pdf
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 271 >> Следующая

ЩЖ\ Типичная ошибка программирования 5.2_
_g^J Группы ChoiceGroup могут объявляться либо как EXCLUSIVE, либо как MULTIPLE. Объявление группы ChoiceGroup как INCLUSIVE приведет к возбуждению исключения IllegalArgumentException.
Разработка приложений для беспроводной связи на базе Java и J2ME
293
Рис. 5.30. Экран приветствия, формируемый мидлетом TipTestMIDlet. (Публикуется с разрешения Sun Microsystems, Inc.)
Рис. 5.31. Информационный экран, формируемый мидлетом TipTestMIDlet.
(Публикуется с разрешения Sun Microsystems, Inc.)
В строках 160-196 объект infoScreen регистрируется в качестве слушателя CoramandListeuer для событий, связанных с операциями selectCommand и backCommand. Когда пользователь нажимает программную кнопку, один из объектов, selectCommand или backCommand, в зависимости от того, какую кнопку нажал пользователь, вызывает метод command Action (строки 168-193). Бели пользователь нажал левую программную кнопку (Back), в строке 191 устанавливается объект типа Display для отображения экрана welcomeScreen. Если пользователь нажал правую программную кнопку (Select), в строках 175-186 отображается экран
294
Глава 5
с вопросом теста. В строке 175 определяется, какой элемент в группе ChoiceGroup выбран. В строках 177—178 этому элементу назначается ссылка на сервлет TipTestServlet. В строках 181-182 осуществляется вызов метода getServIetData, который осуществляет соединение с сервлетом TipTestServlet и принимает вопрос теста Tip Test. Сервлет TipTestServlet случайным образом генерирует информацию каждый раз, когда мидлет TipTestMIDlet устанавливает соединение; данные, которые генерирует сервлет TipTestServlet, имеют следующий формат:
http://localhost:8080/advjhtpl/j2roe/png/portability.png
PERF
CPE
TAD
PORT
В строках 185-186 осуществляется вызов метода createTipTestScreen (строки 203-256) для отображения вопроса теста Tip-Test. В строке 206 вызывается метод parseData для синтаксического разбора вопроса теста Tip-Test и помещения его в пятиэлементный строковый массив. Первый элемент содержит имя файла изображения, размещенного на сервере. Остальные четыре элемента содержат четыре аббревиатуры рубрик советов, из которых пользователь должен выбрать правильный ответ. Форма Form создается, чтобы иметь возможность отобразить изображение Image и группу с вариантами выбора ChoiceGroup, поскольку никакие другие подклассы класса Displayable не обеспечивают такую возможность. В строке 209 создается новая форма tipScreen для отображения вопроса теста Tip-Test.
В строке 212 первый элемент строкового массива передается методу getServer-Image (строки 435-463), который создает объект Image из файла изображения, хранящегося на сервере. В строках 441-442 создается соединение HttpConnection с сервером, в строках 448-449 эти данные записываются в поток ввода Input-Stream, а в строках 452-453 осуществляется возврат изображения Image из потока ввода lnputStream.
В строках 215—216 изображение Image добавляется в экран tipScreen. Теперь мы должны представить четыре возможных ответа, ассоциированных с этим изображением, в виде группы ChoiceGroup. В строках 218-222 создается строковый массив для хранения всех четырех ответов. В строках 225-226 реализуется экземпляр объекта ChoiceGroup, а в строке 229 группа ChoiceGroup добавляется в экран tipScreen. Обратите внимание, что конструктор ChoiceGroup принимает четыре параметра (в отличие от конструктора ChoiceGroup в методе createlnformation-Screen, который принимает два параметра). Первый параметр представляет собой имя группы для выбора ChoiceGroup, которую мы назвали «Tip Test». Второй параметр объявляет тип этой группы как EXCLUSIVE, поэтому пользователь должен подтвердить свой выбор, прежде чем продолжить выполнение. Третий параметр представляет собой строковый массив, который содержит все возможные ответы. Четвертый параметр представляет собой массив изображений Image, ассоциированных с элементами в строковом массиве. На экране устройства каждое из изображений, содержащихся в массиве Image, помещается рядом с соответствующей строкой из массива String. В данном случае в качестве этого параметра передается null, поскольку нам не нужно выводить изображения рядом с каждым из четырех вариантов ответа.
Экран tipScreen представлен на рис. 5.32. На рисунке слева показано изображение Image, для которого пользователь должен выбрать правильное название рубрики советов. Если пользователь осуществит прокрутку этого экрана вниз (рисунок справа), он увидит четыре возможных варианта ответа. Пользователь должен нажать центральную программную кнопку, чтобы подтвердить свой выбор.
Разработка приложений для беспроводной связи на базе Java и J2ME
295
Рис. 5.32. Экран с вопросом теста Tip-Test, формируемый мидлетом TipTestMIDlet
В строках 231-251 объект tipScreen регистрируется в качестве слушателя CommandListener для событий операции selectCommand. Когда пользователь нажимает кнопку Select, объект selectCommand вызывает метод commandAction (строки 238-249). В строке 242 определяется, какой элемент в группе ChoiceGronp был выбран пользователем. В строке 244 сделанный пользователем выбор передается методу postData (строки 306-351), который отправляет этот выбор сервлету TipTestServIet. В строках 312-315 осуществляется соединение с сервлетом TipTestServIet и указывается, что соединение является двунаправленным, т.е. мидлет TipTestMIDlet может как отправлять данные сервлету TipTestServIet, так и принимать от него данные. В строке 317 задается заголовок User-Agent, чтобы сервлет TipTestServIet мог распознать мидлет TipTestMIDlet как клиента J2ME. В строках 320-322 осуществляется отправка идентификатора сеанса, который был сохранен с помощью метода getServerData, чтобы идентифицировать сеанс. В строке 325 задается, что сервлет TipTestServIet будет принимать от мидлета TipTestMIDlet данные, отправленные с помощью метода post. В строках 328-329 открывается поток вывода DataOntputStream, через который в строке 322 выбор пользователя отправляется сервлету TipTestServIet. Как нам известно из раздела 5.3.4, после получения этих данных сервлет TipTestServIet посылает клиенту J2ME правильный ответ. В строке 336 осуществляется вызов метода getData для получения строковых данных с сервера. Эти данные имеют следующий вид:
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 271 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100