Question

I am going to develop j2me application. I want to know, how i can wrap text on canvas according to screen width size in J2ME.

Was it helpful?

Solution

You need to calculate the width of the string to be drawn yourself and start a new line (split the string) each time you reach the max width of the canvas.

void paint(Graphics _g) {
  String t = "text to draw";
  int px_consumed = _g.getFont().substringWidth(t, 0, t.length())}
}

OTHER TIPS

This is my code i used in my app it will wrapped lines vector and u can draw at any X point in canvas.

public static Vector wrapToLines(String text, Font f, int maxWidth) {
        Vector lines = new Vector ();
        boolean paragraphFormat = false;
        if (text == null) {
            return lines;
        }
        if (f.stringWidth(text) < maxWidth) {
            lines.add(text);
            return lines;
        } else {

            char chars[] = text.toCharArray();
            int len = chars.length;
            int count = 0;
            int charWidth = 0;
            int curLinePosStart = 0;
            while (count < len) {
                if ((charWidth += f.charWidth(chars[count])) > (maxWidth - 4) || count == len - 1) // wrap to next line
                {
                    if (count == len - 1) {
                        count++;
                    }
                    String line = new String(chars, curLinePosStart, count - curLinePosStart);
                    if (paragraphFormat) {
                        int lastSpacePosition = line.lastIndexOf(" ");
                        String l = new String(chars, curLinePosStart, (lastSpacePosition != -1) ? lastSpacePosition + 1 : (count == len - 1) ? count - curLinePosStart + 1 : count - curLinePosStart);
                        lines.add(l);
                        curLinePosStart = (lastSpacePosition != -1) ? lastSpacePosition + 1 : count;
                    } else {
                        lines.add(line);
                        curLinePosStart = count;
                    }
                    charWidth = 0;
                }
                count++;
            }
            return lines;

        }
    }

and while just run in for loop

int y=0;
int linespacing=4;
  for(int i=0;i<lines.size();i++)
  {
     g.drawString((String)lines.get(i),10,y,0);
     y+=(i!=lines.size()-1)?(font.getHeight()+linespacing):0;
   }

Enjoy :)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top