Вниз  Java-программирование (1-ые посты)
- 25.01.2014 / 17:29
UserSuperPupsik
  Пользователь

UserSuperPupsik 
Сейчас: Offline
Спасибо, aNNiMON!
Буду пробовать. :-D
- 25.01.2014 / 17:36
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
UserSuperPupsik, конечно, создавать каждый раз новый экземпляр классов не хорошо, лучше кинуть все канвасы в статические массив и вызывать:
  1. if ( (KEY_NUM1 <= key) && (key <= KEY_NUM9) ) {
  2.     display.setCurrent(displayables[key - KEY_NUM1);
  3. }
  4.  
  5. public static Displayable[] displayables;
  6.  
  7. // ----- в Main'e:
  8. AbstractCanvas.displaybles = new Displayble[] {
  9.     new MyCanvas1(), new MyCanvas2(), new MyCanvas3(),
  10.     new MyCanvas4(), new MyCanvas5(), new MyCanvas6(),
  11.     new MyCanvas7(), new MyCanvas8(), new MyCanvas9(),
  12. };

__________________
 let live
- 25.01.2014 / 17:45
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Виктор, или создать вектор и добавить метод addScreen (Screen screen). У меня где-то валяется серьезная наработка, только ннз где
__________________
 знает толк
- 25.01.2014 / 17:48
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
vl@volk, если количество экранов заранее известно, то вектор необязателен. Но вообще да, с ним лучше и гибче.
__________________
 let live
- 25.01.2014 / 18:43
Kalter
  Пользователь

Kalter 
Сейчас: Offline
Не совсем понял 4ый параметр при выведении картинки. Что там нужно указать?
  1. g.drawImage(image,x,y,/*?*/);

__________________
 Homo homini penis est.
- 25.01.2014 / 18:49
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Kalter, точка привязки. Доки в помощь.
Например:
g.drawImage(img, 0, 0, Graphics.TOP | Graphics.LEFT); в точке 0,0 будет верхний левый угол картинки
g.drawImage(img, 0, 0, Graphics.VCENTER | Graphics.RIGHT); в точке 0,0 будет центральная правая сторона картинки.
__________________
 let live

Изменено aNNiMON (25.01 / 18:50) (всего 1 раз)
- 25.01.2014 / 21:17
UserSuperPupsik
  Пользователь

UserSuperPupsik 
Сейчас: Offline
Уважаемый, aNNiMON, у меня куча ошибок не могу применить Ваш код, только время теряю... :-(

Можете дать готовый проект NetBeans? :)
  1. public abstract class AbstractCanvas extends Canvas {
  2.  
  3.     public void keyPressed(int key) {
  4.         if (key ==  KEY_NUM1) display.setCurrent(new MyCanvas1());
  5.         if (key ==  KEY_NUM2) display.setCurrent(new MyCanvas2());
  6.         //...
  7.         if (key ==  KEY_NUM9) display.setCurrent(new MyCanvas9());
  8.         if (key == KEY_NUM8) repaint();
  9.     }
  10. }
  11.  
  12. // Теперь все классы надо наследовать не от Canvas, а от AbstractCanvas.
  13. public class MyCanvas1 extends AbstractCanvas {
  14.  
  15.     public void keyPressed(int key) {
  16.         // Если нужна какая-то дополнительная логика, то пишем:
  17.         super.keyPressed(key);
  18.     }
  19. }
Можете дать готовый проект NetBeans?Так бы всё сразу стало понятно! :)
- 25.01.2014 / 21:24
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
UserSuperPupsik, ты его прям так и вставлял? :?
__________________
 let live
- 25.01.2014 / 21:38
UserSuperPupsik
  Пользователь

UserSuperPupsik 
Сейчас: Offline
Нет я постарался Создать Midlet.java и AbstractCanvas.java.
В Midlet.java запускал класс AbstracCanvas.
Я знаю щас будет :haha: :haha:
А как надо?
- 25.01.2014 / 21:43
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
UserSuperPupsik, держи. Не проект, но классы рабочие. "package main;" можешь при необходимости убрать.
:ps: Абстрактный класс нельзя явно вызвать. Нужно вызывать один из производных, то есть MyCanvasX.
__________________
 let live


Прикрепленные файлы:
main.zip (3.69 кб.) Скачано 41 раз
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)