2012-03-07 75 views
0

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

g.drawString(..) 

但需要,我知道接下来的突破,在这种情况下,我不知道。 有没有其他方法通过重写draw方法来做到这一点?

真的很感谢帮助。谢谢

回答

0

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

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一个可能有用的实用工具类。