【问题标题】:use graphics.drawText(String, x, y) to draw a string on several lines使用 graphics.drawText(String, x, y) 在多行上绘制一个字符串
【发布时间】:2011-10-27 07:30:58
【问题描述】:

我正在制作一个自定义字段来表示图像和它附近的标签。 我正在通过graphics.drawBitmap(...)绘制图像

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

如何绘制可以扩展为多行的文本?

谢谢,

【问题讨论】:

  • @aioobe 我找到了解决方案我该如何关闭帖子?
  • 如果这是我在链接到的问题中提出的解决方案,(并且由于您没有得到任何好的答案)您可能可以删除或关闭它而不会打扰任何人。如果您找到的解决方案与此处的任何其他现有答案不同,那么我建议您自己添加此问题的答案并接受。
  • @aioobe 是的,但我怎么能接受我自己的答案?
  • @Farid,您不应该对 BlackBerry 问题使用“java”标签,因为它会引入不了解 BlackBerry Java-ME 约束的完整 java 社区。​​span>

标签: blackberry graphics java-me


【解决方案1】:

我找到了解决问题的方法。对这个问题感兴趣的人可以在下面找到它:

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] + " ");
    }
}

【讨论】:

    【解决方案2】:

    正如this 回答所说:

    drawString 方法不处理换行,所以是 drawText

    您必须自己将字符串拆分为换行符,并以适当的垂直偏移量逐行绘制。有关详细信息,请参阅该答案。

    【讨论】:

    • 再次查看我的帖子我写了解决方案
    • @Sanjay 您提到的答案是针对 Java SE 而不是针对 Java ME(import java.awt.*; 清楚地表明了这一点)。添加我的 -1
    • @gnat 我说,正如这个答案所说:drawString 方法不处理换行符,SO IS drawText
    • @gnat 我从来没有说过这是你的答案!我juz利用了等价条件给他看!
    • @Sanjay 明白了——现在这更有意义了。如果您编辑您的答案,我将撤销否决票(现在不能这样做 - 所以说我的“投票被锁定,直到答案被编辑”)。顺便说一句,您提到的答案中的代码虽然不是 J2ME API,但几乎说明了如何处理该问题的想法
    【解决方案3】:

    您可以使用 Java Tutorial 中解释的 AttributedCharacterIterator、TextLayout 和 LineBreakMeasurer 类。

    【讨论】:

    • 以上教程是针对Java SE的,指的是Java ME/Blackberry API中不可用的API
    • 这不适用于 Java ME
    • 我为错误的答案道歉!看起来我错过了黑莓和 java-me 标签。也许这个例子 - TextWrapUtil to draw Multiple line text in Java ME 可以帮助你......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    相关资源
    最近更新 更多