在代码中,我正在读取一个xml文件并在JPanel上相应地绘制内容。
如果文件包含标记<LineBreak/>
,我应该在下一个单词之前插入换行符。
我以为我可以使用
g.drawString(..)
但这要求我知道休息后的内容,在这种情况下,我不知道。 有没有其他方法可以通过覆盖draw方法来实现这一点?
真的很感激帮助。感谢
答案 0 :(得分: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了解可能有用的实用程序类。