Сегодня 03.02.2010 Здорова, читатель! Давай из запоя выходи и продолжай учиться j2me. Это вторая часть - тут мля все по-серьезному, никак подстав. Ну че? Вспоминай или перечитывай первую часть в этом, созданном моими руками приложении. В этой части сначала начну с библиотек. Можно немного сделать код поменьше. Ищи мобилу. Нашел? Молоток! Нет? Выпей и спать ложись! Мы импортировали библиотеки точно, то есть какие нам нужны, но иногда ты не знаешь точных названий, а помнишь в каком пакете они находятся(совсем забыл - каждая пакет делится на библиотеки, что-то вроде бы типа так), тут есть выход из положения, не загрязняя код. Это - "*". Например: import javax.microedition.lcdui.*; Слово "import" всегда надо с маленькой буквы писать, бывают и такие ошибки. Теперь по поводу пакета "lcdui". Вот так нашей звездой можно и все импортировать. Теперь можно и приступить к командам: Тут вспоминаем наследование(это где про бабу,которую трахнули). Наследовать несколько раз в одном классе(компилированный код) нельзя(...хм...а бабу тоже не очень хочется в одно презервативе,(плохо)), но тут есть одно решение - это интерфейсы.(с бабой это не прокатит) Можно его реализовать с помощью "implements". Пишем после наследования. Нам интересен интерфейс "CommandListener". Он как раз нам и организует менюшку из нашей, то есть моей стряпни. Дошло? Бугага! Меня чето ржач пробил. Когда мы расширяем функциональность приложения нам бывает потребуются новые библиотеки. Тут как раз наш случай. Так не охота о них писать,честн, извини чувак. Просто импортируй наш любимый "lcdui" и хватит. Можешь почитать литературу, по-любому прийдется. Но это самое, читай дальше. Сегодня 06.02.2010 ПРОДОЛЖИМ: теперь тем вышеописанным воспользуемся: import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class you extends MIDlet implements CommandListener { Display d; Form f; public void startApp() { d = Display.getDisplay(this); f = new Form("YOU"); f.append("TEXT"); d.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean africa) { notifyDestroyed(); } } В этом примере не хватает кое-чего-с, облом-с. ЧТО? Спросишь ты уныло! ...блин...что-то я стихи начал сочинять. Собственно в этом примере не хватает всех команд и т.д. чтобы нам создать переменную.. ну в которой будет так сказать команда. в самом начале класса после скоб создадим переменную, типа кнопка выход. То есть: Command exit; слово "Command" - то есть мы создаем команду, слово "exit" - это наше название переменной,команды, в последствии я к ней буду обращаться далее чтобы действительно получилась команда, создаем ее, это уже пишем в стартовом методе приложения(startApp()) exit = new Command("Выход",Command.EXIT,1); тут значит слово "exit" - я создаю команду,у меня в учебнике это выход. "new Command" - создаем новую команду второе слово всегда с большой буквы пиши. теперь в скобках - в ковычках написано слово "Выход" - это будет на экране выводиться далее запятая, После "Command.EXIT" - здесь я назначаю тип команды,перечисляю их: BACK — возврат к логически предыдущему экрану; CANCEL — выбор отрицательного ответа в диалоге, реализуемом текущим экраном; EXIT — выход из приложения; HELP — вызов помощи или подсказки; ITEM — команда имеет отношение к определенному элементу экрана; OK — выбор положительного ответа в диалоге, реализуемом текущим экраном; SCREEN — команда имеет отношение к отображаемому в настоящее время экрану; STOP — остановка выполняемой в настоящее время операции. Снова запятая стоит и после цифра "1" - это приоритет команды, Его используют, когда хотят сделать меню, то есть, чтобы все в меню было на своем "месте", ВУАЛЛЯЯЯ!!! помнится мы создавали форму теперь можем добавить в нее нашу команду то есть *.addCommand(**); * - это наша форма "f", ** - сюда пишем команду "exit"; но, тут одно НО - телефон не будет слушаться команд, для этого установим приемник команд *.setCommandListener(this); * - это наша форма "f", теперь все надо обмозговать. ДУМАЙ,ДУМАй,ДУМай,ДУмай,Думай,думай.... ДОДУМАЛСЯ??? ПИшу ответ: мы тут ..... то есть я тут реализовал интерфейс, команду, но этого не достаточно. нам нужен метод обработки клавишных событий(ну мля и фраза) это будет полный пример с методом, который можно уже добавить в исходник: public void commandAction(Command c, Displayable d) { if(c == exit) { destroyApp(false); } } теперь разберемся:::тут упасть не встать. "public void commandAction" - говорю телефону, что я использую этот метод, внутри круглых скоб "Command c" - здесь как бы общий случай с командой, то есть мы снова создаем команду, далее запятая и остальное нам в этом учебнике не интересует. После круглых скоб "if(c == exit) { destroyApp(false); }" - это так сказать условие ( общий случай - if(сюды пишем какие-то методы, которые чему-то равны) {здесь выполняются методы, если условие верно} ) "if(c == exit)" - то есть,если команда "c" == "exit" она в этом методе на сколько я знаю всегда какой-то команде равна. тебя смутило, что стоит два знака "==" - это так и должно быть(наверно бухой программист писал j2me) далее выполняются методы, тут он один это "destroyApp(false)" - стоп-метод, в круглых кавычках, вроде должна быть логическая переменная с названием, но логическая переменная может быть как ложь "false", так и правда "true" тута ложь значит все...приложение закрывается. import javax.microedition.lcdui.*; import javax.microedition.midlet.MIDlet; public class you extends MIDlet implements CommandListener { Display d; Form f; Command exit; public void startApp() { d = Display.getDisplay(this); f = new Form("YOU"); f.append("TEXT"); exit = new Command("Выход",Command.EXIT,1); f.addCommand(exit); f.setCommandListener(this); d.setCurrent(f); } public void pauseApp() { } public void destroyApp(boolean africa) { notifyDestroyed(); } public void commandAction(Command c, Displayable d) { if(c == exit) { destroyApp(false); } } } Скоро начну третью писать часть...потопал думать текст про канвас... ПОКА!!!