Swing Line break - 覆盖图形绘制

时间:2012-03-07 18:53:48

标签: swing drawstring

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

g.drawString(..)

但这要求我知道休息后的内容,在这种情况下,我不知道。 有没有其他方法可以通过覆盖draw方法来实现这一点?

真的很感激帮助。感谢

1 个答案:

答案 0 :(得分:0)

我认为您需要使用FontMetricsg.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了解可能有用的实用程序类。