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


Автор: Samuil 25.10.2006, 04:43
Как модно сделать перенос текта в меде paint(), если размер строки в пиксах больше размера экрана то должна преноситься вместе с недоконченным словом на следующую строку, надеюсь понятно обьяснил

Автор: Samuil 25.10.2006, 21:38
Похоже вопрос очень сложен для наших гуру?

Автор: SevenM 26.10.2006, 05:20
Код

  public int drawStrings(Graphics g, int x, int y, int w, String str)
  {
    int ii, pointS = 0, len = str.length();
    for ( ii = 0; ii >= 0; )
    {
      ii = str.indexOf(" ", ii + 1);
      if ( ii < 0 )
      {//больше нет пробелов
        if ( getLen(str) > w )
        {
          g.drawString(str.substring(0, pointS), x, y, Graphics.TOP|Graphics.LEFT);
          str = str.substring(pointS + 1);
          y += getHight();
        }
        g.drawString(str, x, y,  Graphics.TOP|Graphics.LEFT);
        return y + fontB.getHeight();
      }
      else
      {
        if ( fontB.stringWidth(str.substring(0, ii)) < w )
        {
          pointS = ii;
        }
        else
        {
          g.drawString(str.substring(0, pointS), x, y, Graphics.TOP|Graphics.LEFT);
          str = str.substring(pointS + 1);
          pointS = ii = 0;
          y += fontB.getHeight();
        }
      }
    }
    return y;
  }

Перенос только по пробелу, так как по граматике (или чему там еще) после запятой и точки обязательно должен идти пробел.
Возможно чтото лишнее есть, написано на вскидку.
Первый и последний парамерт понятен надеюсь, X и Y это координаты начала рисования, W - ширина, которую можно использовать. fontB - фонт которым рисуете.

Автор: javastic 26.10.2006, 09:12
Samuil, у гуру время не резиновое. Подожди, ответят ещё.
А вообще бы сам попробовал для начала сделать. smile Я конечно понимаю что хочется код сразу и сейчас, но не всегда так бывает. Тем более что всё в описание есть в API, это же не секретная информация.

Автор: Samuil 26.10.2006, 11:10
SevenM, Спасибо!- лови плюс!
javastic, Сам пробовал но так и не решил эту проблемму, если интересно могу код привести!

Цитата

Samuil, у гуру время не резиновое. Подожди, ответят ещё.

Понимаю smile 

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