![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
В общем по одному учебнику я написал код..., код компилируется но когда я его запускаю выдаётся такая ошибка :
Unable to create MIDlet null java.lang.NullPointerException at com.sun.midp.midlet.MIDletState.createMIDlet(+29) at com.sun.midp.midlet.Selector.run(+22) я представляения не имею что это могло бы значить.... В книге код даётся не полностью, а лишь основные части, сам код должен рисовать параболу.... по идеи. Сам код: import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; import java.io.*; public class Parabola extends MIDlet { public void pauseApp(){ } public void destroyApp(boolean unconditional){ notifyDestroyed(); } public class Graph extends Canvas { public void pauseApp(){ } public void destroyApp(boolean unconditional){ } public void paint(Graphics g){ int width = g.getClipWidth(); int height = g.getClipHeight(); g.setColor(255,255,0); g.fillRect(0,0,width, height); g.drawLine(width/2,0,width/2,height); g.drawLine(0,height/2,width,height/2); g.translate(width/2,height/2); g.setColor(255,0,0); for (int x = -width/2; x < width/2; x++){ int y = -x*x/40; g.drawLine(x,y,x,y); } } public void startApp() { } } public void startApp() { Graph graph = new Graph(); Display display = Display.getDisplay(this); display.setCurrent(graph); } } Это сообщение отредактировал(а) Ракша - 21.2.2007, 19:25 |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 13 Всего: 16 |
Ну вот у меня, например, парабола нарисовалась. Т.е. код правильный.
Ты чем собираешь? А HelloWorld удалось запустить? -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
дык
Если же под каким-то IDE собираемся, то нужно очень внимательно посмотреть в настройках этого IDE, в них есть глобалные установки, а есть и локальные, для каждого проекта. Если в WTK пытаемся это дело запускать, то должно быть всё нормально, но тут то же есть маленькие тонкости Добавлено @ 19:57 да и ещё, а нахрена в класс Graph запихали методы из класса унаследованного от MIDlet? (startApp(), destroyApp(),pauseApp()) -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
........
Dancer, чё?? О_о В общем я чуть не застрелился когда узнал в чём ошибка... после часовой пытки компа...... Я каким-то непонятным фигом написал путь к иконке приложения В другом мидлете, я эксперементировал с добавлением нескольких команд. Добавил команды c1,c2,c3,c4,c5 там код написал.... в общем запустил, вижу что на эмуляторе написано menu . Жму софт клавишу выползает высокоуровневое меню. Ну в общем с помощью джойстика выбираю команду с1...... бац, и такой прикол: if (c == c1) setImage("1.png"); if (c == c2) setImage("2.png"); if (c == c3) setImage("3.png"); if (c == c4) setImage("4.png"); if (c == c5) setImage("5.png"); не работают.... тоесть он думает что неодна из перечисленных выше клавишь не нажата.... что за фигня? зы: setImage("1.png") это написанная в ручную функция.... эта функция рабочая и точно добовляет картинку... только толка чтото нет.... |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
используй try/catch - отловишь свои ошибки, там будет видно откуда ноги растут, без кода тебе тут вряд ли кто что скажет. Как варинт, посмотри, а ты в JAR точно свои картинки то получаешь? может быть ты ресуры не имеешь в JAR, вот они и не показываются, а выбрасывается Exception который ты неловишь, поэтому приложение и рушиться. Либо ловишь Exception но оставляешь его без внимания. Тут смотреть нужно, так ничего не скажу.
-------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 13 Всего: 16 |
а код
работает? -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
Dancer, там в старт апе одна из картинок выводится и выводится нормально, судя потому что при выборе какой-то команды удаляется, а при выходи повторном в меню и выборе ещё раз команды не удаляется а выбрасывается....
Antropoid, поставил на все команды.... неработает.... ну вот код: import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*; import java.io.*; public class Sample extends MIDlet implements CommandListener{ private Form mainForm; private Form form; private Image image; private Display display; private int menuChouse; private int slideNum; private Command c1; private Command c2; private Command c3; private Command c4; private Command c5; private Command back; public void pauseApp(){ } public void destroyApp(boolean inconditional){ notifyDestroyed(); } public void startApp(){ display = Display.getDisplay(this); menuChouse = 1; form = new Form(null); mainForm = new Form(null); mainForm .setCommandListener(this); Command c1 = new Command("1.png",Command.OK, 1); Command c2 = new Command("2.png",Command.OK, 1); Command c3 = new Command("3.png",Command.OK, 1); Command c4 = new Command("4.png",Command.OK, 1); Command c5 = new Command("5.png",Command.OK, 1); Command back = new Command("Back",Command.BACK, 2); mainForm.addCommand(c1); mainForm.addCommand(c2); mainForm.addCommand(c3); mainForm.addCommand(c4); mainForm.addCommand(c5); form.addCommand(back); setImage("/1.png"); display.setCurrent(mainForm); } public void commandAction(Command c, Displayable d){ if (menuChouse == 1){ form.delete(0); if (c == c1) System.out.println("Hello Java World"); if (c == c2) System.out.println("Hello Java World"); if (c == c3) System.out.println("Hello Java World"); if (c == c4) System.out.println("Hello Java World"); if (c == c5) System.out.println("Hello Java World"); menuChouse = 2; display.setCurrent(form); form.setCommandListener(this); }else{ menuChouse = 1; display.setCurrent(mainForm); mainForm.setCommandListener(this); } } public void setImage(String path){ try { image = Image.createImage(path); } catch (IOException ioe){ System.out.println(ioe.getMessage()); } form.append(image); } } только как я картинки то перекину? ..... или сами чтоли поставьте свои. |
|||
|
||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
Ещё вот вопрос по ходу обучения появился.... а как убрать эту дурацкую полоску внизу экрана, на мобильнике? какой командой?..... заранее спасибо.
с этим разобрался, спасибо. Это сообщение отредактировал(а) Ракша - 23.2.2007, 18:05 |
|||
|
||||
| Antropoid |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 13 Всего: 16 |
Ёклмн.........не так:
а так:
в своем коде инициализируешь локальные переменные, а не члены класса! И еще не ясно зачем нужно:
комментируй его. -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
||||||
|
|||||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
form.delete(0); - удаляет старую картинку.
О, а так как вы написали заработало.... |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 13 Всего: 16 |
так новая картинка добавляется-то только единожды в startApp() - поэтому при повторном удалении несуществующей картинки возникает java.lang.IndexOutOfBoundsException. Вообщем, пересмотри логику работы программы. -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| Dancer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 29.4.2005 Где: Nizhniy Novgorod Репутация: 33 Всего: 37 |
ну просто, нельзя, практически не возможно не зная языка пытаться писать на J2ME. Это всё равно что, я не знаю правил русского языка, но могу запросто написать приказ ... (может получиться "казнить, нельзя помиловать!") как раз отсюда все твои ошибки. Нет бы основы малешко посмотреть, куда там А про надаевшую строчку пока не расскажу -------------------- У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! |
|||
|
||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
>>так новая картинка добавляется-то только единожды в startApp() - поэтому при повторном удалении несуществующей картинки возникает java.lang.IndexOutOfBoundsException.
это я понимаю. Не смог объяснить, просто голову недавно разбил, Линию внизу экрана я убрал, в канвозе я рисую, с методом paint я разобрался, с потоками разобрался и знаю метод run ..... вообще-то........ А так, ещё пара вопросов...... ВО первых, вот пишу я что icon мидлета "/mech.png" кладу в папку res эту иконку.... жму кнопку ран в тулките, вижу на экранчике эту иконку и название мидлета. Закрываю, пакую в яр файл.... жму на яд. Запускается тот же эмулятор, но иконки не видно, просто сразу идёт название мидлета. Та же самая фигня на мобиле, не выводится эта иконка.... чё за фигня? .... второй вопрос, в проверке нажатых клавишь, есть четыре такие строчки:
Запускаю. На 4 и на 6 код срабатывает, на джойстике лефт и райт не работает...., в книге было написано что Лефт и Райт это на мобильнике стрелки лево и право соответственно.... В чём я ошибся? Не работает ни джойстик ни в эмуляторе, ни в моём сиеменсе. setFullScreenMode(true) - я это нашёл всё таки через поиск по форуму..... но всё равно спасибо за помощь, всем кто здесь мне помог.... вот.... |
|||
|
||||
| W0LF |
|
||||||||||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Там по-людски написано -
-------------------- iOS developer |
||||||||||
|
|||||||||||
| Ракша |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 21.2.2007 Репутация: нет Всего: нет |
W0LF, ааа..... заработало, спасибо.... если один топик - один вопрос, то этаж скоко топиков надо? А под книжкой я имел ввиду не документацию, а там одну, на русском. В документацию я не втыкаю ибо в английском не силён, совершенно.....
Мона последний вопрос... (надеюсь что последний): В ЯВЕ НЕТУ ДВЕМЕРНЫХ МАССИВОВ????? ..... я не понял, пишу вот скажем: menuAction = new String[8,8]; и не проходит.... может их както по другому надо звать? ... на другие вопросы, надеюсь ответить поиском..... Это сообщение отредактировал(а) Ракша - 24.2.2007, 14:16 |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |