Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > drawString на c65


Автор: satellite1977 7.8.2007, 19:12
Привет всем. Сделал программку в которой использовал класс Canvas. На экране отображаются таблица в виде вертикальных и горизонтальных линий и символы (буквы) с помощью drawLine и drawString соответственно. Запускал на NOIKA и SAMSUNG - все ок. Дал другу на Siemens C65, после чего он мне сообщил, что не отображаются символы. Пришлось скачать siemens c65 smtk и проверить на эмуляторе - так и есть. Использую netBeans, добавив туда платформу siemens, компилирую и вижу, что именно drawString не работает. Может кто знает в чем дело?

Автор: nagliyvred 7.8.2007, 19:48
Скорее всего проблема в кодировке. Переведите все в utf-8.

Автор: GhostMasterNet 8.8.2007, 11:39
А ещё лучше, напиши свой шрифт, поскольку на разных телефонах символы отображаются по-разному.
Тему шрифта можно найти поиском.

Автор: satellite1977 9.8.2007, 10:50
похоже так придется и сделать, потому что ничего не получается

Автор: satellite1977 9.8.2007, 17:51
Я вообще в отрубе - drawImage тоже не работает. Хотел нарисовать символы и сделать метод, отображающий их в нужных мне местах, но не тут то было. Не пойму, неужели siemens c65 такое г..но.
Хотя написано что MIDP 2.0 поддерживает.

Это то, что касается drawString
Основной класс:
public class Midlet extends MIDlet 
{
    Display display;
    public Midlet()
    {
    }
    public void startApp() 
    {
        display = Display.getDisplay(this);
        NewClass n = new NewClass();
        display.setCurrent(n);
}
    
    public void pauseApp() 
    {
    }
    
    public void destroyApp(boolean unconditional) 
    {
    }
}

Класс графики:
public class NewClass extends Canvas
{
 
    public void paint(Graphics g)
    {
      g.drawString("hello", 50, 50, g.LEFT);
        
    }
    
    public NewClass() 
    {
        
        setFullScreenMode(true);
    }
    
}



Автор: SatanClaus 9.8.2007, 18:19
Попробуй вот такой Canvas:
Код

public class NewClass extends Canvas
{
 
   private void clearCanvas(Graphics g){
       g.setColor(0xFFFFFF);
       g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
   }

    public void paint(Graphics g)
    {
          clearCanvas(g);
          g.setColor(0x000000);
          g.drawString("hello", 50, 50, Graphics.LEFT | Graphics.TOP);
    }
}


Добавлено через 1 минуту и 27 секунд
Может у тебя эмулятор плохой, или ты на девайсе смотришь?

Автор: satellite1977 13.8.2007, 11:26
Даааааа, все равно не работает. Вроде API такой как у всех, на девайсе один раз только смотрел - также как и на эмуляторе не работало. Ну его на хрен этот C65 )))

Автор: darf 14.8.2007, 12:39
Насколько я помню, C65, это MIDP1. А ты вызываешь setFullScreenMode(true);, которого там нет. Прога вообще падать должна при запуске.

Автор: SatanClaus 14.8.2007, 13:01
Siemens C65 - это MIDP2, но все-равно стоит попробовать setFullScreenMode(true) убрать...

Автор: darf 14.8.2007, 14:16
Точно, перепутал с C60.
Но проблема, я подозреваю, кроется в том, что в конструкторе нужно вызывать метод предка командой super, а так фактически никакая канва не создается.

 public NewClass() 
    {
        super();
        
    }

Автор: SatanClaus 14.8.2007, 14:47
Я читал, что вообще конструктор предка вызывать не стоит, потому что могут быть проблемы...
Хотя, только SIEMENSовские программеры знают, может проблема и в этом. Не у всех же, как у людей  smile 

Автор: darf 15.8.2007, 09:31
Цитата

Я читал, что вообще конструктор предка вызывать не стоит, потому что могут быть проблемы...

Бессовестно врут.
Наоборот, если не вызывать, будут проблемы. А сименсы как раз отличаются тем, что на них код отлаживать лучше - больше багов можно найти.

Автор: satellite1977 16.8.2007, 10:42
Если Канва не создается, то каким же образом работают команды, например, drawLine?
А насчет SetFullScreen - так это я уже позже добавил, подумал - вдруг поможет )))
И еще: Вчера пробовал это на реальном девайсе sony ericson k750i, модель продвинутая и я думаю никаких проблем с реализацией java там быть не может. Так вот, там та же картина что и с C65 )))
А на моей nokia n72 все пашет ок.

Автор: satellite1977 16.8.2007, 11:03
Оказывается...........drawString("hello", 20 ,20, g.LEFT) - работает на моей Nokia, но для C65 одного лишь параметра LEFT недостаточно - нужен еще, например, g.TOP.  Т.е. нужно указать как горизонтальное так и вертикальное выранивание. 
drawString ("hello, 20, 20 , g.LEFT | g.TOP) - работает )))
Вот и вся проблема.
Спасибо за помощь )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)