Добрый день! Пишу курсовой на j2me и столкнулся с проблемой!
Создал класс MyCanvas и начал в нем рисовать меню.
Код | class MyCanvas extends Canvas { private MyCanvas mini; private MIDlet midlet; private Timer myRefreshTimer = new Timer(); private TimerTask myRefreshTask; Image img; InputStream is; int getKey; int index = 1; public MyCanvas( MIDlet midlet ){ this.midlet = midlet; } //Прорисовщик всего сущего protected void paint( Graphics g ){ this.setFullScreenMode(true); new PMenu().paint(g); } //Получаю код нажатой клавиши public void keyPressed(int keyCode){ getKey = keyCode; Keys(getKey); //Прорисовываем изменения repaint(); } //Запуск мидлета protected void startApp(Graphics g){ myRefreshTask = new RefreshTask(); myRefreshTimer.schedule(myRefreshTask, 0, 50); repaint(); } //Объявляю действия которые будут происходить при проиостоновке работы с мидлета (пауза) protected void pauseApp(){ } //Объявляю действия которые будут происходить при завершении работы с мидлетом protected void destroyApp( boolean unconditional ){ destroyApp(true); notifyAll(); } //Объявляю класс обновления экрана с помощью таймера private class RefreshTask extends TimerTask { public void run() { mini.repaint(0,0,352,416); } } //Узнаю индекс выбранного пункта главного меню public int Keys(int KeysNum) { if (KeysNum == -2) { if (index >= 5) {index = 1;} else {index++;} } if (KeysNum == -1) { if (index < 2) {index = 5;} else {index--;} } return index; } //создаю класс для прорисовки главного меню private class PMenu { private void paint(Graphics gr) { //Получаем размер активной области экрана int x = gr.getClipWidth(); // = 352 int y = gr.getClipHeight();// = 416 //Получаем координату X для начальной точки прорисовки меню int XPositionMenu = (x - 139)/2; //Получаем координату X для начальной точки прорисовки Main int XPositionMain = (x - 200)/2; //Заливаем экран черным цветом gr.setColor(0,0,0); gr.fillRect(0,0,352,416); //Рисуем заглавное меню try{ is = getClass().getResourceAsStream("/images/Main.png");//Первый миллион gr.drawImage(img.createImage(is),XPositionMain,5,0); is = getClass().getResourceAsStream("/images/menuNewGame.png");//Новая игра gr.drawImage(img.createImage(is),XPositionMenu,134,0); is = getClass().getResourceAsStream("/images/menuScore.png");//Счет gr.drawImage(img.createImage(is),XPositionMenu,171,0); is = getClass().getResourceAsStream("/images/menuHelp.png");//Помощь gr.drawImage(img.createImage(is),XPositionMenu,208,0); is = getClass().getResourceAsStream("/images/menuAbout.png");//Об игре gr.drawImage(img.createImage(is),XPositionMenu,245,0); is = getClass().getResourceAsStream("/images/menuExit.png");//Выход gr.drawImage(img.createImage(is),XPositionMenu,282,0); is.close(); }catch(IOException ex){} gr.setColor(255,0,0); //**//**//**//{ gr.drawString("" + getKey,0,0,0); //**//**//**//} //Выделение чертой выбранный индекс switch(index) { case 1:gr.drawLine(XPositionMenu,172,XPositionMenu + 139,172);break; case 2:gr.drawLine(XPositionMenu,209,XPositionMenu + 139,209);break; case 3:gr.drawLine(XPositionMenu,246,XPositionMenu + 139,246);break; case 4:gr.drawLine(XPositionMenu,283,XPositionMenu + 139,283);break; case 5:gr.drawLine(XPositionMenu,320,XPositionMenu + 139,320);break; }
//Проверяю на нажатие кнопки ОК с индексом 2, если да то рисую окно с турнирной таблицей if(getKey == -5) { if(index == 2) { gr.setColor(255,0,0); gr.fillRect(0,0,352,416); ///***/// } } //Здесь проблема }} }
|
Ради примера сделал просто По нажатию на кнопку счет рисуеться новое меню, типа Турнирная доска
Код | if(getKey == -5) { if(index == 2) { gr.setColor(255,0,0); gr.fillRect(0,0,352,416); ///***/// } }
|
а теперь проблема как ни пытался сделать чтобы выходило назад в главное меню по нажатию определенной клавиши Все равно Рисует главное меню по нажатию налюбую клавишу
Мне кажеться что проблема здесь
Код | //Прорисовщик всего сущего protected void paint( Graphics g ){ this.setFullScreenMode(true); new PMenu().paint(g); }
|
Помогите пожалуйста с этим разобратьсья, может где то ошибься или не дописал чего то или подскажите как рациональнее поступить. Заранее огромное спасибо!!! |