用Java Graphics.drawString替换完全对齐?

用Java Graphics.drawString替换完全对齐?,java,graphics,text,2d,Java,Graphics,Text,2d,有谁知道现有的代码可以让您在Java2D中绘制完全对齐的文本 例如,如果我说,drawString(“这里的示例文本”,x,y,width),是否有一个现有的库可以计算出该文本的宽度范围,执行一些字符间距以使文本看起来良好,并自动执行基本的换行?虽然不是最优雅、最健壮的解决方案,下面是一个方法,该方法将获取当前对象的名称并获取其名称,以便找出在何处绘制文本,如有必要,移动到新行: public void drawString(Graphics g, String s, int x, int y,

有谁知道现有的代码可以让您在Java2D中绘制完全对齐的文本


例如,如果我说,
drawString(“这里的示例文本”,x,y,width)
,是否有一个现有的库可以计算出该文本的宽度范围,执行一些字符间距以使文本看起来良好,并自动执行基本的换行?

虽然不是最优雅、最健壮的解决方案,下面是一个方法,该方法将获取当前对象的名称并获取其名称,以便找出在何处绘制文本,如有必要,移动到新行:

public void drawString(Graphics g, String s, int x, int y, int width)
{
    // FontMetrics gives us information about the width,
    // height, etc. of the current Graphics object's Font.
    FontMetrics fm = g.getFontMetrics();

    int lineHeight = fm.getHeight();

    int curX = x;
    int curY = y;

    String[] words = s.split(" ");

    for (String word : words)
    {
        // Find out thw width of the word.
        int wordWidth = fm.stringWidth(word + " ");

        // If text exceeds the width, then move to next line.
        if (curX + wordWidth >= x + width)
        {
            curY += lineHeight;
            curX = x;
        }

        g.drawString(word, curX, curY);

        // Move over to the right for next word.
        curX += wordWidth;
    }
}
此实现将使用带有空格字符的方法作为唯一的单词分隔符,将给定的
字符串
分隔成一个
字符串
数组,因此可能不太可靠。它还假设单词后面跟一个空格字符,并在移动
curX
位置时相应地执行操作


如果我是您,我不建议使用此实现,但可能为了实现另一个实现而需要的函数仍将使用提供的方法。

对于单词包装,您可能感兴趣。这里没有理由,不确定添加…(或不可能!)是否容易(或不可能!)谢谢-我实际上开始研究类似的方法,我们的方法有很多相似之处。我还添加了一些可以调整字符间距的逻辑。