2011-05-10 53 views
5

我知道我可以在这样的一个AttributeSet中设置字体系列:字符串插入文档用指定的字体

 SimpleAttributeSet set = new SimpleAttributeSet(); 
     StyleConstants.setFontFamily(set, "Monospace"); 

     doc.insertString(
      caretPosition, text, set); 

但我真正想要做的是设置字体:

 StyleConstants.setFont(set, "Courier New"); 

但是,没有StyleConstants.setFont()方法。

那么,如何设置一个AttributeSet中的字体? (请注意,我可以自由使用除SimpleAttributeSet之外的AttributeSet实现,我只是碰巧使用了那个)。

(请注意,我的真正目标是使用指定字体将字符串插入到Document中)。

+0

工作正常,我。发布证明问题的SSCCE。的 – camickr 2011-05-10 19:49:38

+0

可能重复的[复位插入字符串之后在文档属性(http://stackoverflow.com/questions/5955324/resetting-attributes-in-a-document-after-inserting-a-string) – trashgod 2011-05-10 21:32:14

回答

2

您可以设置所有字体属性使用StyleConstants:

SimpleAttributeSet set = new SimpleAttributeSet(); 
StyleConstants.setFontFamily(set, "Monospace"); 
StyleConstants.setFontSize(set, 22); 
StyleConstants.setBold(set, true); 
StyleConstants.setItalic(set, true); 
3

在我的情况下

SimpleAttributeSet set = new SimpleAttributeSet(); 
StyleConstants.setFontFamily(set, "Monospace"); 

不起作用。我必须改变“等宽”到“等宽”:

StyleConstants.setFontFamily(set, "Monospaced"); 

要查找所有可用的家庭,你可以使用下面的代码:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
String[] fnt = ge.getAvailableFontFamilyNames(); 

for (String f : fnt){ 
      System.out.println(f); 
} 

贝内德克

+0

非常有用的。谢谢 – Volazh 2016-07-29 15:14:26