![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
bncom |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
День добрый!
Начал изучать Java недавно, а тут уже дали задание сделать программу на ME, реализующую принципы ООП. Сделал программу на Java SE (точнее, позаимствовал пример из книги Хорстманна, но сути не меняет, главное, что разобрался во всем):
Теперь нужно написать эту программу в ME. Есть стандартный шаблон (который Хеллоу Ворд выводит), но как отталкиваться дальше, я не знаю.
Буду благодарен, если поможете оформить программу в стандартах ME, чтобы уже дальше я мог тоже посмотреть, как это делается. Это сообщение отредактировал(а) bncom - 20.9.2009, 16:40 --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
||||
|
|||||
Galaran |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 25.5.2009 Репутация: нет Всего: 2 |
Язык тот же. Только библиотека другая
Т.е. тут только System.out.print() и GregorianCalendar, Date заменить на ME аналоги |
|||
|
||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Мне бы поподробнее, на примере. С ME я вообще не знаком (хоть и это и один язык, однако все же немного тут по-другому).
--------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
wtk/apps
там есть куча примеров -------------------- iOS developer |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
bncom, ты же сам написал, что тебе дали задание, чтобы ты лучше разобрался, то есть самостоятельно, если я правильно понимаю
![]() Вот и разбирайся. Тебя тут уже все, кто как смог - направили. Дай и мне, мои 2 цента в копилку бросить ![]() 1) Поставивь WTK от SUN, и смотри javadocs которые там идут, по началу тебе нужно будет MIDP API. javax.microedition.* 2) Фишки, которые юзаются в 1.5/1.6 в ME не прокатят, так что "Employee : e" забываем ![]() for(int i = 0; i < staff.length; i++) {} // что-то вроде этого 3) Шаблон мидлета у тебя есть, там есть Display на который ты и выводишь свои элементы типа TextBox (TextBox t = new TextBox("Lab #1", "Hello, World!", 256, 0);) Значит, тебе нужно организовать код, который будет выводить что-то на экран мобилки, а не в кносоль, как ты делал в SE (System.out.prinln(....)) Ну и выводи ![]() Элементы могут быть StringItem, TextField, собственно писанные..... Form form = new Form("Title"); for(int i = 0; i < staff.length; i++) { form.append(new StringItem("Name: ", staff[i].getName() + " rub", Item.PLAIN); form.append(new StringItem("Name: ", staff[i].getSalary() + " rub", Item.PLAIN); } .... display.setCurrent(form); 4) Остальные классы у тебя есть, так что вперёд - дерзай! ![]() -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Ок, сейчас буду попробую реализовать.
--------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
bncom |
|
||||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Дерзанул, возникло пару вопросов.
Во-первых, я решил свои три класса разместить в трех файлах. Так, по-идеи, правильнее и понятнее выглядит. Во-вторых, почему-то при создании дочернего класса, наследующего свойства суперкласс, у меня вылезает Warning.
Warning: Exporting non-public type through public API В-третьих,
у меня лично вызывает ошибку, спасает только более тривиальный подход:
Однако почему-то строка StringItem hello = new StringItem... в куске кода:
Вызывает ошибку Cannot find symbol. Какой символ он найти не может, не пойму. В четвертых, помогите разобраться с классом GregorianCalendar. Ему, как я понимаю, соответсвует в МЕ класс Calendar. Прописал:
Получил:
В итоге ошибка следующего характера: Implement all abstract methods --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
||||||||||||
|
|||||||||||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
||||
|
||||
bncom |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Это еще что значит? Публичный класс не класс ))
class Manager extends Employee {} - так в книжке написано было.
С календарем поподробнее, пожалуйста, а еще лучше показать на моем примере, как реализовать его в ME. --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
||||
|
|||||
Dancer |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
bncom, ну ты блин и лентяй!!!!
![]() Код компилиться, запускать - не запускал, не где. Код для MIDP 2.0, если нужно для 1.0, то там нету поддержки плавающей точки, то есть убрать придётся всякие double. Не забудь, что в твоём мидлете прописан package - hello, то есть, исходники у тебя так же должны быть в папке hello. Что-то вроде src/hello/*.java (HeloMIDlet.java, Employee.java, Manager.java) Вот твои классы: HelloMIDlet.java
Employee.java
Manager.java
Это сообщение отредактировал(а) Dancer - 21.9.2009, 18:35 -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
||||||
|
|||||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Dancer, спасибо, помог.
В принципе, у меня уже и так все было сделано, единственное, с классом календаря не разобрался.
Интересный подход, в книжке у меня такого вообще нет ![]() Почему-то в профиле MIDP-2.1 запускаться программа не захотелась у меня, поменял на MIDP-2.0 - все заработало. Сейчас буду пробывать прикрутить возможность ввода зарплаты, а потом их вывод с фамилиями. --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
||||
|
||||
bncom |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
У меня наверно сейчас голова лопнет. Сижу уже какое время, пытаюсь реализовать переход с одного экрана на другой.
Экран #1: выводится TextField. Туда заносится процентная надбавка для зарплаты. Экран #2: отображается на Form список служащих с увеличенной зарплатой. Начал тут кумекать:
Вот дальше я не понимаю, где мне располагать "Создаем объект Manager", цикл для вывода инфы о зарплате? Если я оставлю его в private void init() - то это скорее всего будет неправильно, т.к. на экране отобазится: 1. кнопка ВЫХОД 2. кнопка ПЕРЕХОД (она же ОК) 3. Текст "Введите надбавку" 4. Список служащих с зарплатой А ведь надо список служищих в новом окне разместить, уже после ввода надбавки. Иду в обработчки событий:
Вот что надо в if (c == perexodMain) прописывать? --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
||||||
|
|||||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
модлет - такого нет, есть мидлет.
по хорошему, нужно создавать несколько классов, наследоваться от Form, в них прописывать какую-то логику, а потом делать переход между ними. чтоб сделать переход, нужно делать в классе, наследуемом от мидлета статический метод который будет устанавливать дисплей. и я уже писал, что в wtk/apps есть примеры, насколько я помню. Dancer не напишет Вам все Ваши лабораторные(хотя по себе в свое время помню что он оччень терпеливый =) ) и никто особо этим заниматься не будет... это время.. спишите лучше у однокурсников, переименовывая имена классов и интерфейс, если Вы не собираетесь заниматься в будущем этой профессией =) -------------------- iOS developer |
|||
|
||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Да а я разве говорил, что надо писать за меня лабораторные?
Я понимаю, если бы пришел с пустыми руками, а попросил бы за меня написать. Вот это я понимаю был бы наглежь. А тут я просто прошу показать, КАК надо, т.к. в книжке про это хоть и на писано, но для меня лично не очень понятно. Ведь не зря же говорят, что один раз лучше показать, чем сто раз говорить... Очачатался я очачатался =) wtk у меня не стоит, а установлено java Platform ME SDK. APPS - это что такое? Это сообщение отредактировал(а) bncom - 22.9.2009, 16:56 --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
Platform ME SDK и WTK в данном случае одно и то же. Это сейчас у Sun стало называться, платформ бла-бла-бла, а раньше это был просто Wireless Tool Kit (WTK)
Куда ты поставил это дело? Должна быть папка что-то Disk:/bla-bla-bla/WKT_ROOT, назовём её %WTK_HOME% (для удобства) %WTK_HOME%/apps - там есть примеры приложений с исходниками, их там дохрена, смотри не хочу. Кстати, я тебе советовал смотреть javadocs которые идут вместе с WTK, ты их нашёл????? %WTK_HOME%\docs\api - документация %WTK_HOME%\docs\api\midp-2.0\index.html - как только научишься пользоваться этими доками, так сразу отпадёт куча ненужных вопросов. Ну уж а как до кода с примерами доберёшься, думаю их остаться должно будет ещё меньше. у тебя есть display - это твоё окошко (для твоего приложение) в "реальный мир" ![]() display.setCurrent(что-то, что наследовано от Displayable) то есть, Form, List, Canvas вот и пользуй это дело: display.setCurrent(myform); когда произошло нажатие на кнопку, пришёл event ты это дело обработал, понимаешь что нужно другую формочку на экран пихнуть, вот и пихни display.setCurrent(myform); Ну, а W0LF, тебе правильно написал, делай статический метод, для получения дисплея, и можешь это дело юзать в любом своём классе. Вызываться это будет так: HelloMIDlet.getDisplay().setCurretn(bla-bla-bla);
Тут похоже всётаки у тебя проблема не с ME, а с Java как с таковой. Ну а по поводу книжек - на русском по ME хороших не видел, но зато ты можешь здесь многому понабраться, как в FAQ, так и в постах, которые уже не поразу написаны. Читай, пробуй. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
||||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
В книжках такого уровня ошибок было столько....., что мама не горюй, по ним лучше не учиться, либо не сможешь, либо плохому научат (хотя, может быть в последних изданиях всё стало лучше), то что видел - откровенные "какакшки" были. Да и по правде говоря, кроме javadocs который с WTK идёт, по большому счёту больше ничего и не нужно. (по себе помню) всё имхо, конечно ![]() -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
сори за офтоп ![]() а вы не скажете как явадоки из se добавить в me? потому что если пишешь на me, то явадоков на функции из se не видно...что уж только не пробовал...скачивал архивы с сайта с документацией..добавлял их к стандартным явадокам...все равно не видно |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
Ну, вообще то, ME доки в себе всё что нужно имеют и только эти методы можно будет использовать из java.lang java.io и т.д. (имею ввиду исползьовать в ME коде)
С SE вообще не стоит это дело как-то пытаться пересекать. Я если честно не понял для чего это нужно. Если хочется видеть и то и то, ну в браузере делаешь закладки на нужные index.html и пользуешь ![]() Можно конечно пойти ещё одним "хитрожопым" путём и вбабахать линки на java.microedition.* в html файлы, которые идут с SE. Но пожинить это дело просто так не получитсья (хотя, как я уже ранее писал, необходимости не вижу) Если бы были исходники классов ME с /** */ то можно было бы это дело подложить в паку вместе с src SE, пробежаться по всему этому делу javadoc командой и получить новые доки, куда эти пакеты уже будут включены. -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
здается мне, что имелось ввиду подключение джавадока в IDE, так иногда быстрее, туда же обычно и исходники фреймворков лепят, чтоб можно было и исходники смотреть. смотря какая IDE, в Intellij Idea, например, просто в настройках проекта можно было подсунуть или javadoc или sources, и все.
-------------------- iOS developer |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
именно! например хочу я создать в me приложении объект класса Formatter Formatter f = new Formatter(); но явадока на этот класс в me нет...только в se...не создавать же проект se только для того чтобы посмотреть инфу на этот класс... |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
ЭЭЭЭЭ
как бы сказать то...... Я конечно дурак, но не на столько. Если мы будем использовать класс Formatter в своём ME приложении, то компиляция то пройдёт, этого добиться можно, в этом я не сомневаюсь, но как потом будет проходить преверификация??? Она же не пройдёт. И уж тем более, даже если сможем обмануть преверифайер, ну или создать JAR обойдя preverify и зальём в телефон и запустим это дело, на телефоне это упадёт!!!!! Так как нет поддержки данного класса производителем, потому что этот класс не входит в набор API. То нахрена нам его пользовать, если на реальном аппарате это никто не поддерживает???? Тут либо пишем свой Formatter (в своём проекте, своего приложения) и его пользуем, на что IDE впринципе нормально реагирует и покажет и методы этого класса и т.д., если ещё и коментарии в нём в стиле javadoc то и все остальные прелести "прогресса" будут то же. Ну или как W0LF писал, можно это дело поженить в IntelliJ, в NetBeans тоже можно такое сделать. Сказать какие либы пользуются в проекте, где лежать src, где javadocs. Это уже всё зависит от пользуемого IDE, сейчас они сильно продвинутые стали, так что полазий в настройках ![]() -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
ну вообще хотел сделать форматированный ввод в textfield...думал для этого попробовать какие то средства из se...но там похоже таких тоже нет...
т.е. если я правильно понял в sdk для me есть классы и соответственно явадоки к ним только те, которые поддерживаются телефоном, и другие (кроме самописных) классы использовать не вариант? |
|||
|
||||
Dancer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
УГУ, 99,9% true ![]() только не в SDK, скажем так, а в Sun спецификациях, которые называются JSR (слышал навреное?), так вот, именно эту спецификацию производители аппаратов должны поддерживать, то есть в телефоне будут доступны именно те классы и методы, которые представленны в той или спецификации. Ну и производитель соответственно презентует, какие JSR он поддержал. Так же, производитель может сделать поддержку собсвенных классов, которые могут быть доступны пользователю, а могут быть и не доступны, но эти классы никак не будут проходить под каким либо JSR. Вот например, говориться что мобилка поддерживает JSR-75 - это говорит о том, что мидлеты могут ползовать классы для обращения к PhoneBook, базе Events (календарь в мобиле с ремайндерами), и иметь доступ к файловой системе. То есть в своём мидлете можно будет пользовать javax.microedition.pim.* методы и быть уверенным, что аппараты которые поддерживают данный JSR имеют одинаковый интерефейс, и будут работать в принципе одинаково с одним и тем же кодом ;). MIDP2.0 - JSR-118 CLDC-1.0 - JSR-37 MultiMedia - JSR-135 Bluetooth - JSR-92 SMS/MMS - JSR-120/JSR-205 и т.д. На эту тему тут уже не поразу было писано, пошукай конфу. У нас "песочница" очень сильно ограничена, и плюс ко всему, то что ты сможешь пускануть на компе под эмулятором, не факт что один в одни будет работать/отображатсья на конечном устройстве. Сам посчитай сколько сопряжений интерфейсов проходит. ![]() -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! ![]() |
|||
|
||||
susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
Dancer, большое спасибо за разъяснения! плюсую!
![]() |
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
![]() там на шапке темы есть кнопочка со смайликом - "пометить как решенный", ее желательно плиз тыцать, когда вопрос разрешился. Это сообщение отредактировал(а) W0LF - 23.9.2009, 19:40 -------------------- iOS developer |
|||
|
||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Решил подключить к НетБинсу плагин поддержки J2ME. Скачал. установил, все как положено. Затем НетБинс нашел на компе у меня SDK Me, импортировал то, что ему нужно было (точнее, я как понял, он просто у себя порописал пути до моего установленного SDK Me и все).
Создюа новый проект, пакет с классами, вставляю туда код из моего проекта, который был написан в Java Platform ME SDK. Как бы все красиво и ладненько. Запускаю на исполнение, бла-бла... и тут ошибка выскакивает: Updating application descriptor: C:\Users\admin\Documents\NetBeansProjects\Lab1\dist\Lab1.jad Application descriptor does not declare any MIDlet. Direct execution is not allowed. Generated "C:\Users\admin\Documents\NetBeansProjects\Lab1\dist\Lab1.jar" is 3868 bytes. Эмулятор запускается, но программу не запускает. Вопрос: из-за чего это? --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Скорее всего в свойствах проекта не прописал класс мидлета. Для проверки можешь глянуть вот сюда: C:\Users\admin\Documents\NetBeansProjects\Lab1\dist\Lab1.jad и найти в нем строку MIDlet-1: В ней должно быть MIDlet-1: Midlet-Name, Midlet-Icon, Midlet-MainClass (Midlet-Icon может быть пустым) |
|||
|
||||
bncom |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 170 Регистрация: 2.11.2005 Репутация: нет Всего: 1 |
Так точно, было не прописано.
Спс за помощь. --------------------
"Мы никогда не живем, мы лишь надеемся, что будем жить." Вольтер |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |