我有一个Graphics2D
对象,我想使用它的drawString
方法。我可以调用该方法并传递一个字符串和 (x, y) 位置,这非常好。但是,我也可以使用需要 Font 对象Graphics2D
的setFont
方法来更改对象的字体。这也很好。不幸的是,这对我来说还不够,因为我打算为我的 Font 对象定义多个字体文本。
这是我想转移到我的 Font 对象的文本表示:
font-family:"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif
我已经看到我可以使用该AttributedCharacterIterator
界面来解决我的问题,但是,我不确定应该如何使用它。我已经看到实际上有一个名为 的实现,它AttributedString
有一组当我打电话给他们时。Attributes
AttributedString
Font
Graphics2D
drawString
编辑:
public static AttributedString getFontByAttributes(String atts, String value)
{
String[] attributes = atts.split(",");
AttributedString attributedString = new AttributedString(value);
for (int attributeIndex = 0; attributeIndex < attributes.length; attributeIndex++)
{
attributedString.addAttribute(TextAttribute.FONT, attributes[attributeIndex].trim());
}
return attributedString;
}
//...
public void drawTitle(Graphics2D g2d)
{
//...
g2d.drawString(getFontByAttributes(Settings.titleFontString, Settings.title).getIterator(), Settings.headerWidthOffset, Settings.headerHeightOffset);
//...
}
在上面的代码中,我尝试使用 Andale Mono,这在我测试此应用程序的系统上是已知的,但是,在生成的图形中,文本以 Times New Roman 字体绘制。出了点问题,不幸的是我不知道我可能会错过什么。