使用graphics.drawText(String,x,y)在几行上绘制一个字符串

时间:2011-10-27 07:30:59

标签: blackberry graphics java-me

我正在制作一个自定义字段,表示图像及其附近的标签。 我按graphics.drawBitmap(...)

绘制图像

Nw的文字,我正在使用graphics.drawText(String, x, y);,但如果文字大于显示,它不会返回到该行。我试图添加\n,但这并没有解决问题。

如何绘制可在多行上展开的文字?

谢谢,

3 个答案:

答案 0 :(得分:3)

我找到了问题的解决方案。您可以在下面找到对此问题感兴趣的人:

public void drawMultipleLines(Graphics graphics, String text, int X, int Y, int XavailableSpace) {
    String[] texts = UiSpliter.split(text, " "); //UiSpliter is a class that will split the string into string array based on the ' ' character
    int x = X;
    int y = Y;
    for (int i = 0 ; i < texts.length ; i ++) {
        if (x + getFont().getAdvance(texts[i]) - X > XavailableSpace) {
            if (!(x == X)) {
                x = X;
                y = y + getFont().getHeight();
            }
        }
        graphics.drawText(texts[i] + " ", x, y);
        x += getFont().getAdvance(texts[i] + " ");
    }
}

答案 1 :(得分:1)

正如this回答所说:

drawString方法无法处理新行,所以 drawText

你必须自己在新行字符上拆分字符串并逐行绘制具有适当垂直偏移的行。请参阅该答案以获取详细信息。

答案 2 :(得分:-1)

您可以使用AttributedCharacterIterator,TextLayout和LineBreakMeasurer类,如本Java Tutorial中所述。