Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Graphics начало 
:(
    Опции темы
joker332
Дата 21.3.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Помогите исправить ошибку.Вот просто передрал с книги.Не могу разобратся почему не работает.
ПОМОГИТЕ
Код

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public class Graph extends Canvas  {


// функция прорисовки экрана
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.setColor(0,0,0);
    // нарисовать рамку
    g.drawRect(0,0,width-l,height-l);
    // нарисовать оси координат
    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 у = -х*х/40;
    // нарисовать точку параболы
    g.drawline(x,y,x,y);    
}
}
}
public void startApp() {
    // создать объект графика
    Graph graph = new Graph();
    // получить ссылку на менеджер дисплея
    display = Display.getDisplay(this);
    // вывести график на экран
    display.setCurrent(graph);
}
 



PM MAIL   Вверх
vlad275
Дата 22.3.2008, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 485
Регистрация: 20.3.2008

Репутация: нет
Всего: -3



Я тоже новичок. Не подскажите, как перейти в графический режим? NetBean 6.

Midlet2.java
Код

package demo;

import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Midlet2 extends MIDlet {
    private gameCanvas2 gameCanvas;
    private Thread t;
    private Display d;
   

    public void startApp() {
        this.gameCanvas = new gameCanvas2();

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        this.gameCanvas.stop();
    }
}




gameCanvas2.java
Код


package demo;

import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;

/**
 *
 * @author admin
 */
class gameCanvas2 {

    public gameCanvas2() {

    }
    void stop() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private void init() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private void setFullScreenMode(boolean b) {
        throw new UnsupportedOperationException("Not yet implemented");
    }

}


Это сообщение отредактировал(а) vlad275 - 22.3.2008, 01:06


--------------------
Кто, как и зачем запустил этот механизм уничтожения России:
http://rutube.ru/tracks/54915.html?v=e74a9...c7e5d24da5656d8
PM MAIL   Вверх
eugine_s
Дата 22.3.2008, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



joker332
Цитата(joker332 @  21.3.2008,  19:06 Найти цитируемый пост)
Помогите исправить ошибку.

Какую ошибку? Что значит не работает? Как это проявляется?

Как возможный вариант ошибки (которую ты не назвал) - оси не рисуются у тебя?
Скорее всего из-за вот этого:

Код
 
    // получить ширину экрана
    int width = g.getClipWidth(); // это не ширина экрана.
    // получить высоту экрана
    int height = g.getClipHeight();


размер экрана не так вычисляется:

Код

    // получить ширину экрана
    int width = g.getWidth();
    // получить высоту экрана
    int height = g.getHeight();


Еще как вариант ошибки: где ты вызываешь repaint() для своего класса Graph. лучше бы это явно сделать (а не надеятся, что это произойдет при установке setDisplay(graph)

Добавлено через 2 минуты и 51 секунду
vlad275, твой код ничего не делает связанное с графическим режимом.

Советовать сложно что-то.. ну посмотри хотя бы код joker332.

Почитай книги, доки по Canvas, GameCanvas.
PM MAIL   Вверх
Crusaderr
Дата 22.3.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



joker332, чтобы мидлет работал, должен быть 1 класс, наследованный от MIDlet (extends MIDlet)
а чтобы рисовать, нужен другой класс, наследованный от Canvas
(в J2Me множественного наследования нет)

Добавлено @ 13:04
Так правильно:
Код

import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public class Graph extends MIDlet{
public Display display;
public int y;
public void destroyApp(boolean destroy){notifyDestroyed();}
public void pauseApp() {}
public void startApp() {
    // создать объект графика
    Ggraph ggraph = new Ggraph();
    // получить ссылку на менеджер дисплея
    display = Display.getDisplay(this);
    // вывести график на экран
    display.setCurrent(ggraph);
}

private class Ggraph extends Canvas {

// функция прорисовки экрана
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.setColor(0,0,0);
    // нарисовать рамку
    g.drawRect(0,0,width-1,height-1);
    // нарисовать оси координат
    g.drawLine(0,height/2,width,height/2);
    g.drawLine(width/2,0,width/2,height);
    // сместить начало координат в центр экрана
    g.translate(width/2,height/2);
    // установить текущий цвет красным
    g.setColor(255,0,0);
    // для каждой точки по оси х
    for(int x=-width/2; x<width/2; x++) {
    // вычислить значение у по формуле
    y = -x*x/40;
    // нарисовать точку параболы
    g.drawLine(x,y,x,y);    
}
}
}
}



Добавлено @ 13:08
Замеченные ошибки:

Код

    g.drawRect(0,0,width-l,height-l);           //не минус Л(лат. l), а минус один =)
    // нарисовать оси координат
    g.drawLine(width/2.0,width/2,height);          //у метода drawLine 4 параметра: х1,у1,х2,у2 -- от точки с к-ми х1у1 до точки х2у2 нарисовать линию
    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++) {    //x и y везде идут латинские
    // вычислить значение у по формуле
    int у = -х*х/40;                                     //не объявляй переменную y в цикле, лучше объяви сверху
    // нарисовать точку параболы
    g.drawline(x,y,x,y);     //drawLine, J2me придирается к регистру


Это сообщение отредактировал(а) Crusaderr - 22.3.2008, 13:09
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.