0

在代码中,我正在读取一个 xml 文件并在 JPanel 上相应地绘制内容。如果文件包含标签<LineBreak/>,我应该在下一个单词之前插入换行符。我以为我可以使用

g.drawString(..)

但这要求我知道休息后会发生什么,在这种情况下,我不知道。有没有其他方法可以通过覆盖 draw 方法来做到这一点?

非常感谢您的帮助。谢谢

4

1 回答 1

0

我认为您将需要使用FontMetrics ( g.getFontMetrics() ) 来确定显示一行文本所需的垂直像素数。当您调用 drawString 绘制第二行文本时,您必须传递一个y足够大的值,以使第二行文本绘制在第一行文本下方。

String[] lines = myStringFromXmlDoc.split("\r\n|\r|\n");
int verticalOffset = 0; // your starting offset would probably be more dynamic
foreach(String line : lines)
{
    g.drawString(line, 0, verticalOffset);
    // use FontMetrics to implement calcLineHeight for yourself
    int currentLineHeight = calcLineHeight(line, g);
    verticalOffset += currentLineHeight;
}

编辑:

另请参阅java.awt.font.LineBreakMeasurer以获取可能有用的实用程序类。

于 2012-03-07T19:51:17.080 回答