Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Canvas
Список форумов
 ->  Mobile Java


На страницу 1, 2  След. 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 11, 2011 22:01 
Ответить с цитатой
Хочу отобразить это на экране:
Main.java
Код:

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.*;

public class Main extends MIDlet{

    private Display display;
    private KeyCanvas canvas;
    private Displayable KeyCanvas;

   public Main(){
     display = Display.getDisplay(this);
     canvas = new KeyCanvas(this);
   }

    protected void startApp(){
     display.setCurrent(canvas);
    }

    protected void pauseApp() {

    }

    protected void destroyApp(boolean unconditional){

    }
    public void exit(){
     destroyApp(true);
     notifyDestroyed();
   }

}


KeyCanvas
Код:

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Font;


public class KeyCanvas extends Canvas{

    private String message = "Нажмите что-нибудь";
    private Font font;
    private Main midlet;

    public KeyCanvas() {
        font = Font.getFont(Font.FACE_PROPORTIONAL,
                Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
        //this.midlet = midlet;
    }


    public void paint(Graphics g) {
        // получаем ширину и высоту экрана
        int width = getWidth();
        int height = getHeight();

        // рисуем фон
        g.setGrayScale(255);
        g.fillRect(0, 0, width - 1, height - 1);
        g.setGrayScale(0);
        g.drawRect(0, 0, width - 1, height - 1);

        // Задаем фон и координаты для вывода
        g.setFont(font);
        int x = width / 2;
        int y = height / 2;

        // Выводим сообщение
        g.drawString(message, x, y, Graphics.BASELINE | Graphics.HCENTER);
    }

    public void keyPressed(int keyCode) {
        int gameAction = getGameAction(keyCode);
        switch (gameAction) {
            case LEFT:
                message = "LEFT"; break;
            case RIGHT:
                message = "RIGHT"; break;
            case UP:
                message = "UP"; break;
            case DOWN:
                message = "DOWN"; break;
            case FIRE:
                message = "FIRE"; break;
            case GAME_A:
                message = "GAME_A"; break;
            case GAME_B:
                message = "GAME_B"; break;
            case GAME_C:
                message = "GAME_C"; break;
            case GAME_D:
                message = "GAME_D"; break;
            default:
                message = "Нажмите что-нибудь"; break;
        }
        // Перерисовываем
        repaint();
    }
}

Но вылазит ошибка:

symbol : constructor KeyCanvas(Main)
location: class KeyCanvas
canvas = new KeyCanvas(this);
1 error

Что делать?? Помогите Пожалуйста!
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 10:39 
Ответить с цитатой
вот конструктор канваса

Код:
public KeyCanvas()


вот вы инициализируете канвас в мидлете

Код:
canvas = new KeyCanvas(this);


разницу замечаете?
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 20:12 
Ответить с цитатой
Что именно в классе Main неправильно? Я новичек в низкоуровневом UI Sad
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 20:26 
Ответить с цитатой
UI тут не при чем, это основы ява. Либо конструктор канваса должен быть таким

Код:
public KeyCanvas(MIDlet midle)


либо использовать конструктор канваса без аргументов

Код:
canvas = new KeyCanvas();
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 20:35 
Ответить с цитатой
Вот что получилось:
Main.java
Код:

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.*;


public class Main extends MIDlet{

    private Display display;
    private KeyCanvas canvas;
    private Displayable KeyCanvas;

   public Main(){
    Display.getDisplay(this);
    display.setCurrent(KeyCanvas);
   }

   public void startApp(){
       //canvas = new KeyCanvas();
    }

   public void pauseApp(){
    }

   public void destroyApp(boolean unconditional){
    }
}

KeyCanvas.java
Код:


import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Font;
import javax.microedition.midlet.MIDlet;


public class KeyCanvas extends Canvas{
    static MIDlet instance;

    private String message = "Нажмите что-нибудь";
    private Font font;
    private Main midlet;

    public KeyCanvas(MIDlet Main) {
        font = Font.getFont(Font.FACE_PROPORTIONAL,
                Font.STYLE_PLAIN, Font.SIZE_MEDIUM);
    }
......

Не работает! Sad
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 20:46 
Ответить с цитатой
ну хоть компилируется, уже что то.

не работает совсем? или что то есть? кстати что делает setGrayScale а то что то припомнить не могу? а почему вы отдельные цвета для фона и текста не задаете?
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 20:54 
Ответить с цитатой
Канвас это пример с какого-то сайта, я хочу запустить на мобиле этот код, для этого добавил Main. Компилируется нормально,но эмулятор пишет: The application has unexpectedly quit. Contact the application provider to resolve the issue.
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 20:56 
Ответить с цитатой
такс, вспомнил что такое setGrayScale. ради интереса запустил ваш код, у меня работает
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 20:58 
Ответить с цитатой
DRaGoN94 писал(а):
Канвас это пример с какого-то сайта, я хочу запустить на мобиле этот код, для этого добавил Main. Компилируется нормально,но эмулятор пишет: The application has unexpectedly quit. Contact the application provider to resolve the issue.


запускаемый класс правильно указали?
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 21:00 
Ответить с цитатой
Да)
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 21:01 
Ответить с цитатой
ну тогда фаза луны не та
К началу Посмотреть профиль Отправить личное сообщение
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 21:01 
Ответить с цитатой
кстати, классы лучше в пекаджах держать
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 21:02 
Ответить с цитатой
Вы какой средой разраб. пользуетесь? У меня SDK 3.0, может в ней проблема?
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
demon_zx : 1567
Завсегдатай
Откуда: Moscow

СообщениеОкт 12, 2011 21:13 
Ответить с цитатой
я пульсаром пользуюсь, сделайте jar файл и выложите на rghost.ru, посмотрю что генерируется.
Запускаете на CLDC эмуляторе?
К началу Посмотреть профиль Отправить личное сообщение
DRaGoN94 : 33
Новичок
Откуда: Izhevsk

СообщениеОкт 12, 2011 21:20 
Ответить с цитатой
http://rghost.ru/25347841
Пользуюсь CLDC
CLDC-1.1
MIDP-2.0
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
 
Начать новую тему  Ответить на тему
Страница 1 из 2
На страницу 1, 2  След.
Список форумов
 -> Mobile Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru