0
在代码中,我正在读取一个xml文件并在JPanel上相应地绘制内容。 如果文件包含标签<LineBreak/>
我应该在下一个单词前插入一个换行符。 我以为我可以用一个Swing Line break - 覆盖图形绘制
g.drawString(..)
但需要,我知道接下来的突破,在这种情况下,我不知道。 有没有其他方法通过重写draw方法来做到这一点?
真的很感谢帮助。谢谢
在代码中,我正在读取一个xml文件并在JPanel上相应地绘制内容。 如果文件包含标签<LineBreak/>
我应该在下一个单词前插入一个换行符。 我以为我可以用一个Swing Line break - 覆盖图形绘制
g.drawString(..)
但需要,我知道接下来的突破,在这种情况下,我不知道。 有没有其他方法通过重写draw方法来做到这一点?
真的很感谢帮助。谢谢
我想你将需要使用FontMetrics(g.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一个可能有用的实用工具类。